通學智慧型合約(九) 陣列

2021-10-19 10:31:46 字數 1622 閱讀 1469

固定陣列

首先我們來看看固定陣列的預設值。

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...