`

library

 
阅读更多
库和合约的区别在于库不能有Fallback函数以及paynable关键字,也不能定义storage变量.但是库可以修改和它们相链接的合约的storage变量,类似为一个函数传入一个C的指针

库不能有日志(Event),但可以分发事件,通过using xxx for xxx,作用于其它合约变量,当触发库event时需要监控其它合约才行

用于扩展

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.9.0;
import "hardhat/console.sol";

struct Data {
    uint256 data;
}

library Library2 {
    function fun(Data storage d,uint256 data) external {
        console.log("data:");
        d.data = data;
    }
}

contract L {
    using Library2 for Data; //让Data可以调用Library中的函数
    Data d;
    constructor(){
        d.fun(123);
        console.log("a",d.data);
    }
}

分享到:
评论

相关推荐

    MSDN Library

    MSDN Library是微软公司提供的一款极其重要的开发人员资源库,它包含了微软所有可开发产品的技术文档、编程指南、API参考、示例代码以及科技文献。这个综合性的平台为开发者提供了全面的技术支持,无论你是初学者...

    Library

    "Library"是一个与JavaScript相关的项目或库,但具体的功能和用途并未在标题和描述中明确说明。然而,我们可以根据常见的编程实践和JavaScript库的特点来推测可能包含的知识点。 1. **JavaScript基础**: 作为标签,...

    MSDN library

    msdn library 14,百度盘下载。大小6G,分卷下载

    JsonLibrary

    JsonLibrary

    scala-library-2.12.1

    scala-library-2.12.1 是 Scala 编程语言的标准库文件,版本为 2.12.1。它提供了在使用 Scala 进行开发时所需的基本库支持。Scala 是一种多范式编程语言,融合了面向对象编程和函数式编程的特性,主要运行在 JVM ...

Global site tag (gtag.js) - Google Analytics