国产成人 综合 亚洲欧美,羞羞影院成人午夜爽爽在线,中文字幕av在线一二三区,午夜私人成年影院在线观看,男人把大ji巴放进女人视频

okx

Solidity數(shù)組詳解

時(shí)間:2023-06-17|瀏覽:240

數(shù)組是各種編程語(yǔ)言常見(jiàn)的數(shù)據(jù)類(lèi)型。在Solidity中,可以支持編譯期定長(zhǎng)數(shù)組和變長(zhǎng)數(shù)組。類(lèi)型為T(mén),長(zhǎng)度為k的數(shù)組可以聲明為T(mén)[k],而變長(zhǎng)數(shù)組則聲明為T(mén)[]。

1. 創(chuàng)建數(shù)組 1.1 字面量 我們可以使用字面量創(chuàng)建數(shù)組并隱式創(chuàng)建一個(gè)定長(zhǎng)數(shù)組: ``` uint[3] memory a = [1,2,3]; ``` 需要注意的是,數(shù)組元素類(lèi)型應(yīng)該剛好能存儲(chǔ)的元素類(lèi)型。例如,[1,2,3]只需要uint8即可存儲(chǔ)。但由于我們聲明的變量是uint(默認(rèn)的uint表示的是uint256),所以需要使用uint(1)進(jìn)行顯式的類(lèi)型轉(zhuǎn)換。而字面量方式聲明的數(shù)組是定長(zhǎng)的,實(shí)際長(zhǎng)度必須與聲明相匹配,否則編譯器會(huì)報(bào)錯(cuò)。例如:Type string memory[1] memory is not implicitly convertible to expected type string memory[2] memory。

1.2 new關(guān)鍵字 對(duì)于變長(zhǎng)數(shù)組,需要使用new關(guān)鍵字來(lái)初始化一個(gè)數(shù)組。例如: ``` uint[] memory a; a = new uint[](2); ``` 在聲明前使用下標(biāo)方式訪(fǎng)問(wèn)將會(huì)報(bào)錯(cuò),但我們可以使用new uint[](2)進(jìn)行初始化。

2. 數(shù)據(jù)屬性和方法 2.1 length屬性 數(shù)組有一個(gè)length屬性,表示當(dāng)前數(shù)組長(zhǎng)度??梢酝ㄟ^(guò)給length賦值調(diào)整數(shù)組長(zhǎng)度。對(duì)于storage的變長(zhǎng)數(shù)組,可以進(jìn)行長(zhǎng)度調(diào)整。例如: ``` uint[] storage a; a.length++; ``` 或者使用push方法來(lái)隱式擴(kuò)展數(shù)組長(zhǎng)度。

對(duì)于memory的變長(zhǎng)數(shù)組,雖然可以通過(guò)參數(shù)靈活指定大小,但一旦創(chuàng)建,大小不可調(diào)整。

2.2 push方法 變長(zhǎng)的storage數(shù)組和bytes(不包括string)有一個(gè)push方法。可以將一個(gè)新元素附加到數(shù)組末端,返回值為當(dāng)前長(zhǎng)度。例如: ``` uint[] storage a; a.push(1); ``` 同時(shí)需要注意的是memory的變長(zhǎng)數(shù)組不支持push。

2.3 下標(biāo) 數(shù)組可以通過(guò)數(shù)字下標(biāo)訪(fǎng)問(wèn),從0開(kāi)始。對(duì)于大小為2的數(shù)組T[2],要訪(fǎng)問(wèn)第二個(gè)元素,要使用下標(biāo)值1。

如果狀態(tài)變量類(lèi)型為數(shù)組,也可以標(biāo)記為public類(lèi)型,從而讓Solidity創(chuàng)建一個(gè)訪(fǎng)問(wèn)器。例如: ``` uint[] public a; ``` 訪(fǎng)問(wèn)具體的元素時(shí)需要輸入一個(gè)要訪(fǎng)問(wèn)序號(hào)的數(shù)字。

3. 多維數(shù)組 和大多數(shù)程序語(yǔ)言一樣,多維數(shù)據(jù)的定義也很類(lèi)似。例如,我們要?jiǎng)?chuàng)建一個(gè)長(zhǎng)度為5的uint數(shù)組,每個(gè)元素又是一個(gè)變長(zhǎng)數(shù)組。將被聲明為uint[][5](需要注意的是,與其它語(yǔ)言不同的是,需要反過(guò)來(lái)定義)。

例如,聲明一個(gè)二維數(shù)組,它是一個(gè)變長(zhǎng)的數(shù)組,里面的每個(gè)元素是一個(gè)長(zhǎng)度為2的數(shù)組。要訪(fǎng)問(wèn)這個(gè)數(shù)組flags,第一個(gè)下標(biāo)為變長(zhǎng)數(shù)組的序號(hào),第二個(gè)下標(biāo)為長(zhǎng)度為2的數(shù)組序號(hào): ``` uint[][] flags; uint[] storage f = flags[0]; f.push(1); ```

4. bytes和string bytes和string是一種特殊的數(shù)組。bytes類(lèi)似byte[],但不同的是,在外部函數(shù)會(huì)進(jìn)行壓縮打包,更省空間,所以應(yīng)該盡量使用bytes[1]。string類(lèi)似bytes,但不提供長(zhǎng)度和按序號(hào)的訪(fǎng)問(wèn)方式。

由于bytes和string是可以自由轉(zhuǎn)換的,可以將字符串s通過(guò)bytes(s)轉(zhuǎn)為一個(gè)bytes。需要注意的是,通過(guò)這種方式訪(fǎng)問(wèn)到的是UTF-8編碼的碼流,并不是獨(dú)立的一個(gè)個(gè)字符。比如,中文編碼是多字節(jié)、變長(zhǎng)的,所以你訪(fǎng)問(wèn)到的很有可能只是其中的一個(gè)代碼點(diǎn)。另外,bytes支持push方法。

5. 限制 在外部函數(shù)中,目前還不能使用多維數(shù)組。因?yàn)镋VM的限制,外部函數(shù)不能返回變長(zhǎng)數(shù)據(jù)??梢允褂靡粋€(gè)非常大的定長(zhǎng)數(shù)組作為解決辦法。

以上就是Solidity數(shù)組的內(nèi)容,希望對(duì)大家有所幫助,

作者專(zhuān)注于以太坊(Ethereum)和Solidity技術(shù)的研究,更多信息請(qǐng)見(jiàn)作者的個(gè)人博客。

熱點(diǎn):數(shù)據(jù)

歐易

歐易(OKX)

用戶(hù)喜愛(ài)的交易所

幣安

幣安(Binance)

已有賬號(hào)登陸后會(huì)彈出下載

« 上一條| 下一條 »
區(qū)塊鏈交流群
數(shù)藏交流群

合作伙伴

去玩唄SPA 談股票 旅游資訊網(wǎng) 借春秋財(cái)經(jīng) 幣圈交流群 元宇宙Web 非小號(hào)行情 黃金行情 媽媽知道 美白沒(méi)斑啦 裝修裝飾網(wǎng) 金色幣圈 數(shù)字財(cái)經(jīng) 玩合約 天天財(cái)富 培訓(xùn)資訊網(wǎng) 幣圈ICO官網(wǎng) 秒懂域名 兼職信息網(wǎng) 寶寶起名 谷歌留痕 聚幣網(wǎng) 百悅米 幣圈官網(wǎng) 減肥瘦身吧 百科書(shū)庫(kù) 皮卡丘資訊 代特幣圈 借春秋 數(shù)字黃金 茶百科 愛(ài)網(wǎng)站 趣玩幣 玩票票財(cái)經(jīng) 幣圈論壇 今日黃金 周公解夢(mèng)
非小號(hào)交易所排名-專(zhuān)業(yè)的交易行情資訊門(mén)戶(hù)網(wǎng)站,提供區(qū)塊鏈比特幣行情查詢(xún)、比特幣價(jià)格、比特幣錢(qián)包、比特幣智能合約、比特幣量化交易策略分析,狗狗幣以太坊以太幣玩客幣雷達(dá)幣波場(chǎng)環(huán)保幣柚子幣萊特幣瑞波幣公信寶等虛擬加密電子數(shù)字貨幣價(jià)格查詢(xún)匯率換算,幣看比特兒火幣網(wǎng)幣安網(wǎng)歐易虎符抹茶XMEX合約交易所APP,比特幣挖礦金色財(cái)經(jīng)巴比特范非小號(hào)資訊平臺(tái)。
非小號(hào)行情 yonghaoka.cn 飛鳥(niǎo)用好卡 ?2020-2024版權(quán)所有 桂ICP備18005582號(hào)-1