Solidity 中的哈希表映射(Mapping)類型。
映射(Mapping)
在映射中,你可以透過一個鍵(Key)來查找對應的值(Value),就像透過某人的身份證號碼來查找他的姓名一樣。
聲明映射的格式為 mapping(_KeyType => _ValueType),其中 _KeyType 和 _ValueType 分別表示鍵和值的變數類型。
映射的 _KeyType 必須選擇 Solidity 默認的類型。
映射的存儲位置必須是 storage,因此可以用於合約的狀態變數、函數中的 storage 變數,以及庫(library)函數的參數。它不能用於公共函數的參數或返回值,因為映射記錄的是一種關係(鍵值對)。
如果映射聲明為 public,Solidity 會自動生成一個 getter 函數,允許通過鍵來查詢對應的值。
要向映射添加新的鍵值對,可以使用語法 _Var[_Key] = _Value,其中 _Var 是映射的變數名,_Key 和 _Value 對應新增的鍵值對。
映射不存儲任何鍵(Key)的信息,也不存儲鍵(Key)的數量。
映射使用 keccak256(key) 作為偏移量來存取值(Value)。
因為 Ethereum 會將所有未使用的存儲空間初始化為0,所以未賦值的鍵(Key)的初始值都是各個類型的默認值。