摘要:刪除枚舉類型時,會將其值重置為序號為的值。刪除結(jié)構(gòu)體刪除結(jié)構(gòu)體,會將所有成員變量置為初值。刪除數(shù)組對于定長數(shù)組,刪除時,是將數(shù)組內(nèi)所有元素置為初值。注意事項刪除的本質(zhì)是初始化變量。但可對其引用的對象進(jìn)行操作。
簡介
Solidity中的特殊操作符delete用于釋放空間,為鼓勵主動對空間的回收,釋放空間將會返還一些gas。
delete操作符可以用于任何變量,將其設(shè)置成默認(rèn)值0。
刪除枚舉類型時,會將其值重置為序號為0的值。
如果對動態(tài)數(shù)組使用delete,則刪除所有元素,其長度變?yōu)?。
如果對靜態(tài)數(shù)組使用delete,則重置所有索引。
如果對map類型使用delete,什么都不會發(fā)生。
如果對map類型中的一個鍵使用delete,則會刪除與該鍵相關(guān)的值。
刪除基本類型使用delete刪除基本類型會設(shè)置為對應(yīng)的初始值。
pragma solidity ^0.5.10; contract DeleteDemo{ bool public b = true; uint public i = 1; address public addr = msg.sender; bytes public varByte = "123"; string public str = "abc"; enum Color{RED,GREEN,YELLOW} Color public color = Color.GREEN; function deleteAttr() public { delete b; // false delete i; // 0 delete addr; // 0x0 delete varByte; // 0x delete str; // "" delete color;//Color.RED } }刪除結(jié)構(gòu)體
刪除結(jié)構(gòu)體,會將所有成員變量置為初值。
struct Person{ string name; uint age; } Person public p = Person("zhangsan",21); function deletePerson() public{ delete p; }
調(diào)用改方法之后,結(jié)構(gòu)體Person的name將變?yōu)榭眨琣ge將變?yōu)?。
刪除mapping映射是一個特殊的存在,由于映射的鍵并不總是能有效遍歷,所以不能直接刪除一個映射。如果直接刪除一個映射會報錯Unary operator delete cannot be applied。但可以指定鍵來刪除映射中的某一項。
mapping[msg.sender] = 1; //可以按key刪除映射 delete mapping[msg.sender];
如果刪除一個結(jié)構(gòu)體時,其中含有映射類型,會跳過映射類型。也就是說,結(jié)構(gòu)體的其他內(nèi)容會被初始化,而其中mapping中的內(nèi)容不會改變。
刪除數(shù)組對于定長數(shù)組,刪除時,是將數(shù)組內(nèi)所有元素置為初值。
對于變長數(shù)組時,則是將長度置為0。
可以刪除數(shù)組的一個元素,刪除一個元素后,數(shù)組中對應(yīng)位置的值會被初始值,其它值不受影響。
刪除時gas的處理刪除時忽略映射和刪除數(shù)組中某個位置的值僅初始化改值而不重組數(shù)組都是考慮到節(jié)省gas。如果映射或數(shù)組非常大的情況下,刪除或維護(hù)它們將變得非常消耗gas。
清理空間的額外好處是可以獲得gas返還,但對無特別意義的數(shù)組的整理和刪除,只會消耗更多gas,需要在業(yè)務(wù)實現(xiàn)上進(jìn)行權(quán)衡。
注意事項刪除的本質(zhì)是初始化變量。所以刪除storage的引用時會報錯,因為storage的引用并沒有自己已分配的存儲空間,所以不能對storage的引用直接賦初值。
但可對其引用的對象進(jìn)行delete操作。
原文鏈接:http://www.choupangxia.com/20...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/75644.html
摘要:在此記錄一下被提問的問題吧論水平也就是初級前端,所以很多問題也是挺簡單的。為了直觀和調(diào)試的方便,我們把屬性這么寫其實對于作三角形這一目的,邊框的風(fēng)格并不重要,所以在這里不多做研究。 經(jīng)歷了各種選擇與被選擇之后(其實就是被坑了),最終又離開了平靜乃至頹廢的劃水崗位,重新跳入前端求職的大鍋,繼續(xù)翻騰。在此記錄一下被提問的問題吧(論水平也就是初級前端,所以很多問題也是挺簡單的)。 css篇:...
摘要:當(dāng)然,如果你的新元素有兄弟元素的話,也可以使用通用的兄弟選擇符頁面頂部陰影下面這個簡單的代碼片段可以給網(wǎng)頁加上漂亮的頂部陰影效果給添加行高你不需要分別添加到每個標(biāo)記等。 使用技巧會讓人變的越來越懶,沒錯,我就是想讓你變懶。下面是我收集的CSS高級技巧,希望你懶出境界。 1. 黑白圖像 這段代碼會讓你的彩色照片顯示為黑白照片,是不是很酷? img.desaturate { fil...
摘要:畢業(yè)之后就在一直合肥小公司工作,沒有老司機(jī)沒有技術(shù)氛圍,在技術(shù)的道路上我只能獨自摸索。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十倍吧。。。。 畢業(yè)之后就在一直合肥小公司工作,沒有老司機(jī)、沒有技術(shù)氛圍,在技術(shù)的道路上我只能獨自摸索。老板也只會畫餅充饑,前途一片迷茫看不到任何希望。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十...
摘要:解決辦法添加復(fù)制內(nèi)容到剪貼板一行右側(cè)第一個元素有雙邊距一行左側(cè)第一個元素有雙邊距在,下,自身沒浮動,但是的內(nèi)容有浮動,下邊就會產(chǎn)生一個間隙解決辦法給加浮動給加注意當(dāng)下最小高度問題,和的間隙問題共存的時候,給加浮動才能解決。目前主流瀏覽器的兼容性做的都比較好了,本文主要針對IE6,7的不兼容問題進(jìn)行解決。 1.圓盤時鐘有浮動存在時,計算一定要精確,不要讓內(nèi)容的寬高超出我們所設(shè)置的寬高,IE6下...
閱讀 1425·2021-11-15 11:38
閱讀 3574·2021-11-09 09:47
閱讀 1972·2021-09-27 13:36
閱讀 3217·2021-09-22 15:17
閱讀 2554·2021-09-13 10:27
閱讀 2868·2019-08-30 15:44
閱讀 1172·2019-08-27 10:53
閱讀 2708·2019-08-26 14:00