原文: 《Solidity 極簡入門: 5. 引用類型, array, struct》
作者:0xAA
我最近在重新學solidity,鞏固一下細節,也寫一個「Solidity 極簡入門」,供小白們使用(編程大佬可以另找教程),每週更新1-3 講。
所有代碼開源在github :github.com/AmazingAng/WTFSolidity
這一講,我們將介紹solidity 中的兩個重要變量類型:數組(array)和結構體(struct)
數組array
數組(Array)是solidity 常用的一種變量類型,用來存儲一組數據(整數,字節,地址等等)。數組分為固定長度數組和可變長度數組兩種:
固定長度數組:在聲明時指定數組的長度。用T[k] 的格式聲明,其中T 是元素的類型,k 是長度,例如:
可變長度數組:在聲明時不指定數組的長度。用T[] 的格式聲明,其中T 是元素的類型,例如(bytes 比較特殊,是數組,但是不用加[]):
創建數組的規則
在solidity 裡,創建數組有一些規則:
對於memory 可變長度數組,可以用new 操作符來創建,但是必須聲明長度,並且長度不能改變。例子:
數組字面常數是寫作表達式形式的數組,並且不會立即賦值給變量,例如[uint(1),2,3](需要聲明第一個元素的類型,不然默認用存儲空間最小的類型)如果創建的是dynamic array,你需要一個一個元素的賦值。
數組成員
length: 數組有一個包含元素數量的length 成員,內存數組的長度在創建後是固定的。
push():可變長度數組和 bytes 擁有 push() 成員,可以在數組最後添加一個0 元素。
push(x): 可變長度數組和bytes 擁有 push(x) 成員,可以在數組最後添加一個x 元素。
pop: 可變長度數組和bytes 擁有 pop 成員,可以移除數組最後一個元素。
結構體struct
Solidity 支持通過構造結構體的形式定義新的類型。創建結構體的方法:
給結構體賦值的兩種方法:
總結
這一講,我們介紹了solidity 中數組(array)和結構體(struct)的基本用法。下一講我們將介紹solidity 中的哈希表——映射(mapping)。