4. Solidity:引用類型變量:數(shù)組

4.1 數(shù)組分類

  • 動態(tài)數(shù)組(可變長度數(shù)組)
    // 動態(tài)數(shù)組
    uint[] public nums = [1,2,3];
    bytes public bs;
    address[] public addrs;
  • 定長數(shù)組
    // 定長數(shù)組
    uint[3] public nums3 = [1,2,3];
    bytes[3] public bs4;
    address[3] public addrs3;

4.2 數(shù)組操作

  • length: 獲取數(shù)組長度
  • push() & push(x): 數(shù)組長度+1棉安,push() 為添加元素默認(rèn)值东跪,push(x)為添加指定元素值
  • delete: 數(shù)組長度不變止喷,索引對應(yīng)元素置為默認(rèn)值
  • pop(): 數(shù)組元素-1呛凶,刪除末尾元素
    代碼示例:
    // 數(shù)組操作 
    function arrayOp() external returns (uint,uint,uint[] memory){
        // 獲取數(shù)組長度
        uint a = nums.length;
        uint b = nums3.length;
 
        // push() & push(x)
        nums.push(); // 數(shù)組長度增加1彪杉,push元素為uint默認(rèn)值:[1,2,3] -> [1,2,3,0]
        nums.push(5); // [1,2,3,0,5]

        // delete
        delete nums[1]; // [1,0,3,0,5]

        // pop()
        nums.pop(); // [1,0,3,0]
        return (a,b,nums);
    }

4.3 內(nèi)存中的數(shù)組

  • 內(nèi)存中創(chuàng)建數(shù)組使用new關(guān)鍵字
  • 必須指定數(shù)組長度(內(nèi)存中創(chuàng)建的數(shù)組為定長數(shù)組)
    示例代碼:
    // 內(nèi)存中的數(shù)組
    function arrInMemory() pure external returns (uint, uint[] memory) {
        // 在內(nèi)存中創(chuàng)建數(shù)組谣光,使用new關(guān)鍵字檩淋,數(shù)組必須指定長度。(內(nèi)存中的數(shù)組必須為定長數(shù)組)
        uint[] memory a = new uint[](3);

        // 內(nèi)存中數(shù)組的相關(guān)操作
        // 獲取數(shù)組長度
        uint l = a.length;
        // 賦值
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;
        // "刪除元素"
        delete a[1];

        return (l,a);
    }

4.4 數(shù)組元素刪除

Solidity中delete方法只會將數(shù)組中的元素置為默認(rèn)值萄金,并不會將數(shù)組中的元素從數(shù)組中移出蟀悦,即不會改變數(shù)組長度。如果想刪除數(shù)組中的指定元素氧敢,根據(jù)業(yè)務(wù)需求不同日戈,可以有移動數(shù)組元素和替換數(shù)組元素兩種方法。

  • 移動數(shù)組元素:適用于對數(shù)組元素順序有要求的情況(不改變數(shù)組元素順序孙乖,但是消耗較多gas fee)
    // 刪除數(shù)組元素--移動數(shù)組元素
    function remove1(uint _index) external returns (uint[] memory) {
        require(_index < nums.length, "index out if range");
        for (uint i = _index;i < nums.length - 1;i++) {
            nums[i] = nums[i+1];
        }
        nums.pop();
        return nums;
    }
  • 替換數(shù)組元素:適用于對于數(shù)組元素順序沒有要求的情況(消耗較少gas fee浙炼,但是改變了數(shù)組元素順序)
    // 刪除數(shù)組元素--替換數(shù)組元素
    function remove2(uint _index) external returns (uint[] memory){
        require(_index < nums.length, "index out if range");
        nums[_index] = nums[nums.length - 1];
        nums.pop();
        return nums;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唯袄,隨后出現(xiàn)的幾起案子弯屈,更是在濱河造成了極大的恐慌,老刑警劉巖恋拷,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件资厉,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔬顾,警方通過查閱死者的電腦和手機(jī)酌住,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阎抒,“玉大人,你說我怎么就攤上這事消痛∏胰” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵秩伞,是天一觀的道長逞带。 經(jīng)常有香客問我,道長纱新,這世上最難降的妖魔是什么展氓? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮脸爱,結(jié)果婚禮上遇汞,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好空入,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布络它。 她就那樣靜靜地躺著,像睡著了一般歪赢。 火紅的嫁衣襯著肌膚如雪化戳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天埋凯,我揣著相機(jī)與錄音点楼,去河邊找鬼。 笑死白对,一個胖子當(dāng)著我的面吹牛掠廓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躏结,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼却盘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了媳拴?” 一聲冷哼從身側(cè)響起黄橘,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屈溉,沒想到半個月后塞关,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡子巾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年帆赢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片线梗。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寺庄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霜幼,到底是詐尸還是另有隱情恬惯,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布烤咧,位于F島的核電站偏陪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏煮嫌。R本人自食惡果不足惜笛谦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昌阿。 院中可真熱鬧饥脑,春花似錦恳邀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至框往,卻和暖如春鳄抒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椰弊。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工许溅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秉版。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓贤重,卻偏偏與公主長得像,于是被迫代替她去往敵國和親清焕。 傳聞我的和親對象是個殘疾皇子并蝗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容