今天来延续一点昨天聊到的 libraries 的另一个应用 using-for
using-for 的用法,先来看看下面范例
这是从 官网,参考的一个范例
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;
//定义一个 Data struct 里面的有一个 mapping 的属性
struct Data { mapping(uint => bool) flags; }
//这边做了一些 mapping 的新增删除的方法
library Set {
function insert(Data storage self, uint value)
public
returns (bool)
{
if (self.flags[value])
return false;
self.flags[value] = true;
return true;
}
function remove(Data storage self, uint value)
public
returns (bool)
{
if (!self.flags[value])
return false;
self.flags[value] = false;
return true;
}
}
contract C {
using Set for Data; //这边把 Set 指定给 Data
//宣告一个 Data型别的变数 叫做 knowValues
Data knownValues;
function register(uint value) public {
//这边就可以直接使用 Insert的方法
require(knownValues.insert(value));
}
}
这边再补充一下,如果要从别的档案载入 libraries ,就需要用到 import
这个指令,看一下下面的范例
import “filename”;
透过上述语法,就可以引入其他档案的合约 & libraries 。
<<: # Day10--只有蓝图是不够的!我们要来变出一个实体!
打开Preference,选择 Appearance & Behavior 勾选 Use c...
本篇以 Vue CLI 开始这一回合。 Vue CLI 提供快速建置的开发环境,使用者只需透过简易设...
runBlocking 中文用户如我们? 直译一下就是,跑一个塞住 恩,三小? 他真正的意思是,执行...
在撰写程序时我发现了一个以前没有遇到过的事情,我原先一直以为是因为环境导致的但是後来我发现跟环境没有...
想请问一下各位大大 你们之前使用ANYDESK 客户端是出现8码吗? 因为以前都是9个数子,客户端出...