原文: 《Solidity 極簡入門: 5. 引用類型, array, struct》
作者:0xAA

我最近在重新學solidity,鞏固一下細節,也寫一個「Solidity 極簡入門」,供小白們使用(編程大佬可以另找教程),每週更新1-3 講。

所有代碼開源在github :github.com/AmazingAng/WTFSolidity

這一講,我們將介紹solidity 中的兩個重要變量類型:數組(array)和結構體(struct)

數組array

數組(Array)是solidity 常用的一種變量類型,用來存儲一組數據(整數,字節,地址等等)。數組分為固定長度數組和可變長度數組兩種:

固定長度數組:在聲明時指定數組的長度。用T[k] 的格式聲明,其中T 是元素的類型,k 是長度,例如:

Solidity極簡入門第五講:引用類型, array, struct

可變長度數組:在聲明時不指定數組的長度。用T[] 的格式聲明,其中T 是元素的類型,例如(bytes 比較特殊,是數組,但是不用加[]):

Solidity極簡入門第五講:引用類型, array, struct

創建數組的規則

在solidity 裡,創建數組有一些規則:

對於memory 可變長度數組,可以用new 操作符來創建,但是必須聲明長度,並且長度不能改變。例子:

Solidity極簡入門第五講:引用類型, array, struct

數組字面常數是寫作表達式形式的數組,並且不會立即賦值給變量,例如[uint(1),2,3](需要聲明第一個元素的類型,不然默認用存儲空間最小的類型)如果創建的是dynamic array,你需要一個一個元素的賦值。

Solidity極簡入門第五講:引用類型, array, struct

數組成員

length: 數組有一個包含元素數量的length 成員,內存數組的長度在創建後是固定的。

push():可變長度數組和 bytes 擁有 push() 成員,可以在數組最後添加一個0 元素。

push(x): 可變長度數組和bytes 擁有 push(x) 成員,可以在數組最後添加一個x 元素。

pop: 可變長度數組和bytes 擁有 pop 成員,可以移除數組最後一個元素。

結構體struct

Solidity 支持通過構造結構體的形式定義新的類型。創建結構體的方法:

Solidity極簡入門第五講:引用類型, array, struct

給結構體賦值的兩種方法:

Solidity極簡入門第五講:引用類型, array, struct

總結

這一講,我們介紹了solidity 中數組(array)和結構體(struct)的基本用法。下一講我們將介紹solidity 中的哈希表——映射(mapping)。