Day 17:
6.陣列-2
陣列可以宣告為靜態或動態。
(1).靜態陣列
靜態的陣列在宣告時需要
指定陣列長度並且在後續的使用中不能修改長度。
Example:
uint[5] x; /* 靜態陣列 */
uint[5] x=[1,2,3,4,5]; /* 靜態陣列初始化 */
// 更改陣列元素
x[0] = 6; /* x = [6,2,3,4,5] */
// length 長度
uint x_length = x.length; /* 返回陣列長度 */
(2).動態陣列
動態陣列在宣告時,不需要指定陣列長度,並且再
後續的使用,可以動態修改陣列長度。
Example:
bytes32[] names; // 動態陣列,Default長度為 0
//or 初始化為一個長度為5的動態陣列
bytes32 names = new bytes32[] (5);
// push 添加元素,返回新陣列的長度
uint newLength = name.push("gcc2ge");
newLength = names.push("shouhewu");
// 修改陣列中的元素
names[0] = bytes32("Danielwu");
//length
names.length; // 取得陣列長度
(3).多維陣列
多維陣列可以宣告為動態或靜態,在solidity中多維陣列的
列與行的定義方式與大多數的程式語言相反,舉例說明。
Example:
靜態:
uint[3][5] x; /* 宣告 5列 3行的陣列 */
動態:
uint[][5] y; /* 5列的行動態陣列 */
//特性
y[0].push(uint(1)); /* 添加元素,返回行長度 */
y[0].length = 10; /* 設置行數 */
uint[3][] z; // 3行的列動態陣列
z.push([1,2,3]); // 添加元素,返回新陣列的列數
z.length = 10; // 設置列數
7.結構
結構是Solidity中的自定義資料類型,可以包含
字串,整數,陣列,映射,結構,等等的資料類型.
在Solidity中需要使用struct來定義結構。
Example:
// 定義結構
struct Bank {
address owner;
uint balance;
}
// 初始化
(1).
Bank b = Bank({
owner:msg.sender,
balance:5
});
(2).
Bank c(msg.sender, 5);
c.balance = 15; // 重新賦值
// 重置所有變數為0, 除了映射類型
delete c;