[区块链&DAPP介绍 Day17] Solidity 教学 - using-for

今天来延续一点昨天聊到的 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--只有蓝图是不够的!我们要来变出一个实体!

>>:  鬼故事 - 勒索软件骇客都在干嘛

Android Studio Mac 版本 git log 中文无法显示

打开Preference,选择 Appearance & Behavior 勾选 Use c...

Day 02:Vue 个专案先

本篇以 Vue CLI 开始这一回合。 Vue CLI 提供快速建置的开发环境,使用者只需透过简易设...

day8 kotlin coroutine的 runBlocking, withContext

runBlocking 中文用户如我们? 直译一下就是,跑一个塞住 恩,三小? 他真正的意思是,执行...

企划实现(18)

在撰写程序时我发现了一个以前没有遇到过的事情,我原先一直以为是因为环境导致的但是後来我发现跟环境没有...

很急 ANYDESK 8码

想请问一下各位大大 你们之前使用ANYDESK 客户端是出现8码吗? 因为以前都是9个数子,客户端出...