iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Modern Web

區塊鏈&DAPP介紹系列 第 7

[區塊鏈&DAPP介紹 Day7] Solidity 教學 - Mapping Types

  • 分享至 

  • xImage
  •  

今日來介紹 Mapping Types。

Mapping Types

它其實就是一個一般語言裡面的 hash table。它就是一個動態的陣列,key 裡面的東西不支援 enum & struct,value 裏面支援所有型別,也可以在自己包一個 mapping進去。

先來看看語法

//很標準的 key string , value uint的 map
mapping(string => uint) public wallet;

//mapping 包 mapping的寫法
mapping(string =>mapping(string=>uint)) public test;

//設定 mapping 裏面得值
wallet['syhlion']=100

//取mapping裏面得值
uint money = wallet['syhlion']

那目前 mapping 不支援 iterable,這邊有一個簡單的東西可以實作 iterable

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract MappingIterableExample {

    //先定義一個mapping
    mapping(string => uint) public wallet;

    // 再用mapping的key值 多定義一個相同type的 array
    string[] usernames;


    //每次新增時,再array 同步把key push進去
    function add(string username, uint amount) public {
        usernames.push(name);
        wallet[username] = amount;
    }

    function iterable() public {
        for (uint i = 0; i< usernames.length; i++) {
            // 透過 iterable array,來取 mapping得值
            uint amount = wallet[usernames[i]];
        }
    }

}

上一篇
[區塊鏈&DAPP介紹 Day6] Solidity 教學 - reference types
下一篇
[區塊鏈&DAPP介紹 Day8] Solidity 教學 - functions
系列文
區塊鏈&DAPP介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言