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