Solidity語言學習筆記————16、對映Mapping

FLy_鵬程萬里發表於2018-06-21

solidity裡的對映可以理解為python裡的字典,建立鍵-值的對應關係,可以通過鍵來查詢值,鍵必須是唯一的,但值可以重複。

定義方式為:mapping(鍵型別=>值型別),例如mapping(address=>uint)  public  balances,這個對映的名字是balances,許可權型別為public,鍵的型別是地址address,值的型別是整型uint,在solidity中這個對映的作用一般是通過地址查詢餘額。鍵的型別允許除對映外的所有型別。

例如:對映balances中包括三個鍵值對(user1:100,user2:145,user3:195),輸入user2即可得到145

下面來看一個例子:

contract MappingExample{
    mapping(address => uint) public balances;
    
    function update(uint amount) returns (address addr){
        balances[msg.sender] = amount;
        return msg.sender;
    }
}

說明:定義balances為一個對映,msg.sender是合約建立者的地址,函式update有一個整型引數amount(數量),

balances[msg.sender]=amount的意思是將引數amount的值和msg.sender這個地址對應起來。

對映型別,僅能用來定義狀態變數,或者是在內部函式中作為storage型別的引用。引用是指你可以宣告一個,如var storage mappVal的用於儲存狀態變數的引用的物件,但你沒辦法使用非狀態變數來初始化這個引用。(沒太看懂,暫定)

由於資料不全,很多具體的對映用法暫時不清楚,找到之後我再補充!

相關文章