[区块链&DAPP介绍 Day7] Solidity 教学 - Mapping Types

今日来介绍 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]];
        }
    }

}

<<:  Day7-Go回圈

>>:  Day3大哥我错了我选择vue2

页面切换好夥伴- Vue Router [序]

前言 在过去,路由主要是 Server 负责,根据不同的路由去决定要渲染的页面,回传整个 HTML ...

Day 20 测试router的前奏

昨天我们讲到使用context-util来让每个测试都包住Provider来达到测试的元件都能取得P...

Day-08 你对前端还是後端比较有兴趣?

这题我要直接破梗,因为这是一道陷阱题! 大家要小心也,不要真的去给他选下去啊! 很多人一看到这种二...

【Day18】如何防御密码破解

哈罗~ 前面介绍了密码破解的工具, 今天就来介绍一下防御密码的小知识, 以及一些日常花个几分钟,就能...

D17/ 我要用的 View 没有支援 Compose 怎麽办? - AndroidView

今天大概会聊到的范围 Android View 前两天来回进出了公司楼下的 7-11 两三次,每次...