固定陣列
首先我們來看看固定陣列的預設值。
pragma solidity ^
0.4.16
;contract fixarray
}
編譯執行後,我們可以看到,固定陣列初始值都為0.
函式對固定陣列初始值進行修改:
pragma solidity ^
0.4.16
;contract fixarray
function getarraycontent
() view returns
(uint[5
])}
我們先執行init
方法,然後在執行獲取陣列內容方法,會發現結果符合我們的預期0: uint256[5]: 100,200,0,0,0
再者,我們看看對於固定陣列內部元素求和。
pragma solidity ^
0.4.16
;contract fixarray
function sumarr
() view returns
(uint
)return sum;
}}
對於上面的**而言,我們先直接通過字面量的方式初始化乙個固定陣列。然後利用for
迴圈進行累計求和。
其中的sum += arr[i]
等同於sum = sum+arr[i]
;最終結果是15,符合我們的預期。
最後,我們再來看看 ,對於固定陣列,能否修改它的長度或者是新增元素呢?閉上眼睛,思考30s。
經過我們演示,發現獲取固定長度陣列是沒有任何問題的,但是這樣暴力去修改固定陣列長度,編譯器可是不能答應的。(這裡大家可以點選左側,編譯器下方的自動編譯,就不能每次都去點編譯啦)
最後的最後,我們在來看看是否能夠進行push
操作呢?
顯然,也是行不通的。在這裡,我們的固定陣列就告一段落了。
可變長度陣列
上面我們說了固定陣列,最後提到固定陣列是沒有辦法改變長度和新增元素的,如果有這個訴求,就要引入我們的可變長度陣列了
。
另外,我們上面學了那麼多陣列,會發現乙個規律,就是陣列主要就那麼幾個知識點
那麼我們的可變長陣列當然也不例外了。至於初始化、獲取陣列長度和內容,和我們的固定陣列是一樣的,這裡就不在演示了。主要來看看不一樣的改變陣列長度和陣列內容。如下:
pragma solidity ^
0.4.16
;contract dynamicarray
function changelength2()
function getcontent
() view returns
(uint
)
function getlength
() view returns
(uint
)
function push()
}
驗證結果,正是說明了固定陣列和動態長度陣列的差別。在這裡,我們一維陣列就介紹完了。下節,我們將想大家介紹陣列中的二維陣列。 通學智慧型合約系列(四) 整型運算
2.整型與算術運算 在solidity中,基本的整型有int 有符號整型,有正有負 和uint 無符號整型,無負數 並且他們以8位為區間,int支援int8,int16,int24至int256,uint同理。int預設為int256,uint預設為uint256.思考一下,為什麼solidity要...
通學智慧型合約系列(六) 位元組陣列
關鍵字有 bytes1,bytes2mbytes3,bytes32 以步長1遞增 byte代表bytes1。pragma solidity 0.4.16 contract bytearray 固定長度位元組陣列對於數值來說,有點等同於我們的uint。乙個位元組等於8位。即bytes1 有點等同於ui...
通學智慧型合約系列(七) 字串
字串 我們都知道字串在其他程式語言中,都是出場率相當高的乙個角色,重要程度不言而喻。在solidity中也不例外。在上節我們學習了動態位元組陣列,而我們的字串,可不可以按照動態位元組的陣列去獲取他的長度和其中的元素呢?我們寫乙個例子來看看吧。pragma solidity 0.4.16 contra...