成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

solidity智能合約如何判斷mapping值為空

tabalt / 1519人閱讀

摘要:值的判斷問(wèn)題在這類(lèi)編程語(yǔ)言中,我們可以獲得里面的值然后與或空來(lái)進(jìn)行判斷該對(duì)應(yīng)的值是否為空。值的判斷解決方案如果值里面存的為,那么只需在內(nèi)設(shè)置一個(gè)字段,用來(lái)表示改結(jié)構(gòu)體是否已經(jīng)被賦值。前一種情況并不存在面向編程語(yǔ)言中的空指針異常的問(wèn)題。

mapping值的判斷問(wèn)題

在Java這類(lèi)編程語(yǔ)言中,我們可以獲得Map里面的值然后與null或空來(lái)進(jìn)行判斷該key對(duì)應(yīng)的值是否為空??墒窃趕olidity中貌似并沒(méi)有提供類(lèi)似的判斷。那么我們?nèi)绻麃?lái)進(jìn)行mapping值的判斷呢。

mapping值的判斷解決方案

如果mapping值里面存的為struct,那么只需在struct內(nèi)設(shè)置一個(gè)字段,用來(lái)表示改結(jié)構(gòu)體是否已經(jīng)被賦值。如果mapping的值為地址則可通過(guò)與0地址比較來(lái)判斷是否優(yōu)質(zhì)。

前一種情況并不存在面向編程語(yǔ)言中的空指針異常的問(wèn)題。

以下為示例代碼:

pragma solidity ^0.5.10;

contract TestCheckNullStruct{
    
    struct User{
        uint name;
        bool isUsed;
    }
    
    mapping(address => User) users;
    mapping(uint => address) addresses;
    
    function isExistEntry(address _addr) public view returns(bool){
        return users[_addr].isUsed;
    }
    
    function isExistAddress(uint _key) public view returns(bool){
        return addresses[_key] != address(0);
    }
}
微信公眾號(hào)

更多職場(chǎng)經(jīng)驗(yàn)、認(rèn)知提升等知識(shí)分享,請(qǐng)關(guān)注微信公眾號(hào):程序新視界(ID:ershixiong_see_world)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75574.html

相關(guān)文章

  • 以太坊開(kāi)發(fā)實(shí)戰(zhàn)學(xué)習(xí)-solidity語(yǔ)法(二)

    摘要:以太坊開(kāi)發(fā)高級(jí)語(yǔ)言學(xué)習(xí)。地址以太坊區(qū)塊鏈由賬戶組成,你可以把它想象成銀行賬戶。使用很安全,因?yàn)樗哂幸蕴粎^(qū)塊鏈的安全保障除非竊取與以太坊地址相關(guān)聯(lián)的私鑰,否則是沒(méi)有辦法修改其他人的數(shù)據(jù)的。 以太坊開(kāi)發(fā)高級(jí)語(yǔ)言學(xué)習(xí)。 一、映射(Mapping)和地址(Address) 我們通過(guò)給數(shù)據(jù)庫(kù)中的僵尸指定主人, 來(lái)支持多玩家模式。 如此一來(lái),我們需要引入2個(gè)新的數(shù)據(jù)類(lèi)型:mapping(映射)...

    wemall 評(píng)論0 收藏0
  • solidity智能合約如何判斷地址為0或空

    摘要:智能合約地址判斷在舊版本中可使用以下代碼來(lái)進(jìn)行比較但如果在新版本中使用,則會(huì)提示錯(cuò)誤信息。那么,如何正確使用來(lái)比較地址是否為空呢。因此可以如下寫(xiě)法或當(dāng)然,在使用操作符的時(shí)候也建議使用或來(lái)替代原文鏈接 智能合約地址判斷 在舊版本中可使用以下代碼來(lái)進(jìn)行比較: owner != 0x0 但如果在新版本中使用,則會(huì)提示錯(cuò)誤信息。 那么,如何正確使用來(lái)比較地址是否為空呢。 解決方案 可以使用ad...

    鄒強(qiáng) 評(píng)論0 收藏0
  • 如何通過(guò)以太坊智能合約來(lái)進(jìn)行眾籌(ICO)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接如何通過(guò)以太坊智能合約來(lái)進(jìn)行眾籌原文已更新,請(qǐng)讀者前往原文閱讀前面我們有兩遍文章寫(xiě)了如何發(fā)行代幣,今天我們講一下如何使用代幣來(lái)公開(kāi)募資,即編寫(xiě)一個(gè)募資合約。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:如何通過(guò)以太坊智能合約來(lái)進(jìn)行眾籌(ICO)原文已更新,請(qǐng)讀者前往原文閱讀 前面我們有兩遍文章寫(xiě)了如何發(fā)行代幣,今天我們講一下如何使用代幣來(lái)公開(kāi)募資,即編寫(xiě)一...

    forrest23 評(píng)論0 收藏0
  • Solidity 簡(jiǎn)易教程0x001

    摘要:函數(shù)和可用于檢查條件并在條件不滿足時(shí)拋出異常。函數(shù)只能用于測(cè)試內(nèi)部錯(cuò)誤,并檢查非變量。函數(shù)和狀態(tài)變量?jī)H在當(dāng)前定義它們的合約中使用,并且不能被派生合約使用。派生合約可以訪問(wèn)所有非私有成員,包括內(nèi)部函數(shù)和狀態(tài)變量,但無(wú)法通過(guò)來(lái)外部訪問(wèn)。 Solidity是以太坊的主要編程語(yǔ)言,它是一種靜態(tài)類(lèi)型的 JavaScript-esque 語(yǔ)言,是面向合約的、為實(shí)現(xiàn)智能合約而創(chuàng)建的高級(jí)編程語(yǔ)言,設(shè)計(jì)...

    FrozenMap 評(píng)論0 收藏0
  • 如何編寫(xiě)一個(gè)可升級(jí)的智能合約

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接如何編寫(xiě)一個(gè)可升級(jí)的智能合約原文已更新,請(qǐng)讀者前往原文閱讀區(qū)塊鏈信任基礎(chǔ)的數(shù)據(jù)不可修改的特性,讓它傳統(tǒng)應(yīng)用程序有一個(gè)很大的不同的地方是一經(jīng)發(fā)布于區(qū)塊鏈上就無(wú)法修改不能直接在原有的合約上直接修改再重新發(fā)布。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:如何編寫(xiě)一個(gè)可升級(jí)的智能合約原文已更新,請(qǐng)讀者前往原文閱讀 區(qū)塊鏈信任基礎(chǔ)的數(shù)據(jù)不可修改的特性,讓它傳統(tǒng)應(yīng)用...

    Euphoria 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<