今日来介绍 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]];
}
}
}
前言 在过去,路由主要是 Server 负责,根据不同的路由去决定要渲染的页面,回传整个 HTML ...
昨天我们讲到使用context-util来让每个测试都包住Provider来达到测试的元件都能取得P...
这题我要直接破梗,因为这是一道陷阱题! 大家要小心也,不要真的去给他选下去啊! 很多人一看到这种二...
哈罗~ 前面介绍了密码破解的工具, 今天就来介绍一下防御密码的小知识, 以及一些日常花个几分钟,就能...
今天大概会聊到的范围 Android View 前两天来回进出了公司楼下的 7-11 两三次,每次...