成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

solidity的delete操作匯總

Eminjannn / 1871人閱讀

摘要:刪除枚舉類型時(shí),會(huì)將其值重置為序號(hào)為的值。刪除結(jié)構(gòu)體刪除結(jié)構(gòu)體,會(huì)將所有成員變量置為初值。刪除數(shù)組對(duì)于定長數(shù)組,刪除時(shí),是將數(shù)組內(nèi)所有元素置為初值。注意事項(xiàng)刪除的本質(zhì)是初始化變量。但可對(duì)其引用的對(duì)象進(jìn)行操作。

簡介

Solidity中的特殊操作符delete用于釋放空間,為鼓勵(lì)主動(dòng)對(duì)空間的回收,釋放空間將會(huì)返還一些gas。

delete操作符可以用于任何變量,將其設(shè)置成默認(rèn)值0。

刪除枚舉類型時(shí),會(huì)將其值重置為序號(hào)為0的值。

如果對(duì)動(dòng)態(tài)數(shù)組使用delete,則刪除所有元素,其長度變?yōu)?。

如果對(duì)靜態(tài)數(shù)組使用delete,則重置所有索引。

如果對(duì)map類型使用delete,什么都不會(huì)發(fā)生。

如果對(duì)map類型中的一個(gè)鍵使用delete,則會(huì)刪除與該鍵相關(guān)的值。

刪除基本類型

使用delete刪除基本類型會(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)榭眨琣ge將變?yōu)?。

刪除mapping

映射是一個(gè)特殊的存在,由于映射的鍵并不總是能有效遍歷,所以不能直接刪除一個(gè)映射。如果直接刪除一個(gè)映射會(huì)報(bào)錯(cuò)Unary operator delete cannot be applied。但可以指定鍵來刪除映射中的某一項(xiàng)。

mapping[msg.sender] = 1;
//可以按key刪除映射 
delete mapping[msg.sender];

如果刪除一個(gè)結(jié)構(gòu)體時(shí),其中含有映射類型,會(huì)跳過映射類型。也就是說,結(jié)構(gòu)體的其他內(nèi)容會(huì)被初始化,而其中mapping中的內(nèi)容不會(huì)改變。

刪除數(shù)組

對(duì)于定長數(shù)組,刪除時(shí),是將數(shù)組內(nèi)所有元素置為初值。

對(duì)于變長數(shù)組時(shí),則是將長度置為0。

可以刪除數(shù)組的一個(gè)元素,刪除一個(gè)元素后,數(shù)組中對(duì)應(yīng)位置的值會(huì)被初始值,其它值不受影響。

刪除時(shí)gas的處理

刪除時(shí)忽略映射和刪除數(shù)組中某個(gè)位置的值僅初始化改值而不重組數(shù)組都是考慮到節(jié)省gas。如果映射或數(shù)組非常大的情況下,刪除或維護(hù)它們將變得非常消耗gas。

清理空間的額外好處是可以獲得gas返還,但對(duì)無特別意義的數(shù)組的整理和刪除,只會(huì)消耗更多gas,需要在業(yè)務(wù)實(shí)現(xiàn)上進(jìn)行權(quán)衡。

注意事項(xiàng)

刪除的本質(zhì)是初始化變量。所以刪除storage的引用時(shí)會(huì)報(bào)錯(cuò),因?yàn)閟torage的引用并沒有自己已分配的存儲(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://m.hztianpu.com/yun/75644.html

相關(guān)文章

  • 近階段前端面試問題匯總(css篇)

    摘要:在此記錄一下被提問的問題吧論水平也就是初級(jí)前端,所以很多問題也是挺簡單的。為了直觀和調(diào)試的方便,我們把屬性這么寫其實(shí)對(duì)于作三角形這一目的,邊框的風(fēng)格并不重要,所以在這里不多做研究。 經(jīng)歷了各種選擇與被選擇之后(其實(shí)就是被坑了),最終又離開了平靜乃至頹廢的劃水崗位,重新跳入前端求職的大鍋,繼續(xù)翻騰。在此記錄一下被提問的問題吧(論水平也就是初級(jí)前端,所以很多問題也是挺簡單的)。 css篇:...

    鄒強(qiáng) 評(píng)論0 收藏0
  • 20 個(gè) CSS 高級(jí)技巧匯總

    摘要:當(dāng)然,如果你的新元素有兄弟元素的話,也可以使用通用的兄弟選擇符頁面頂部陰影下面這個(gè)簡單的代碼片段可以給網(wǎng)頁加上漂亮的頂部陰影效果給添加行高你不需要分別添加到每個(gè)標(biāo)記等。 使用技巧會(huì)讓人變的越來越懶,沒錯(cuò),我就是想讓你變懶。下面是我收集的CSS高級(jí)技巧,希望你懶出境界。 1. 黑白圖像 這段代碼會(huì)讓你的彩色照片顯示為黑白照片,是不是很酷? img.desaturate { fil...

    Java3y 評(píng)論0 收藏0
  • 2019前端面試題匯總(主要為Vue)

    摘要:畢業(yè)之后就在一直合肥小公司工作,沒有老司機(jī)沒有技術(shù)氛圍,在技術(shù)的道路上我只能獨(dú)自摸索。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十倍吧。。。。 畢業(yè)之后就在一直合肥小公司工作,沒有老司機(jī)、沒有技術(shù)氛圍,在技術(shù)的道路上我只能獨(dú)自摸索。老板也只會(huì)畫餅充饑,前途一片迷茫看不到任何希望。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十...

    arashicage 評(píng)論0 收藏0
  • 關(guān)于css兼容性問題及一些常見問題匯總

    摘要:解決辦法添加復(fù)制內(nèi)容到剪貼板一行右側(cè)第一個(gè)元素有雙邊距一行左側(cè)第一個(gè)元素有雙邊距在,下,自身沒浮動(dòng),但是的內(nèi)容有浮動(dòng),下邊就會(huì)產(chǎn)生一個(gè)間隙解決辦法給加浮動(dòng)給加注意當(dāng)下最小高度問題,和的間隙問題共存的時(shí)候,給加浮動(dòng)才能解決。目前主流瀏覽器的兼容性做的都比較好了,本文主要針對(duì)IE6,7的不兼容問題進(jìn)行解決。 1.圓盤時(shí)鐘有浮動(dòng)存在時(shí),計(jì)算一定要精確,不要讓內(nèi)容的寬高超出我們所設(shè)置的寬高,IE6下...

    seanlook 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<