[区块链&DAPP介绍 Day16] Solidity 教学 - libraries

今天来介绍一个 Solidity 的另一个特别的东西 libraries。

下面来看看 library 的写法范例

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;


//定义一个Math library ,里面有一个 add function。

library Math {
    function Add(uint a, uint b) public view returns (uint c) {
        return a+b;
    }


}


contract Main {

    function Test(uint a,uint b) public view returns (uint ){
        // 这样就能直接调用 Math里的 Add function
        uint c = Math.Add(a,b);
        return c;
    }
}

它的应用范围很广,可以把一些常用的东西抽象化成一个 library,也能减少重新部署程序码所需消耗的资源跟 Gas,然後看它的调用方式,如果有写过 OOP 应该很熟悉,它就是 solidity 里的静态类别,它是不需要任何实体化动作,就能直接做调用。

libiary 会有几个限制。

  1. 不能被继承。
  2. 不能使用昨天所介绍过的 event
  3. 不能使用储存功能,也就是不能在 library 储存 state variables,但可以处理其他 constract 里面的 state variables。

明天我们来介绍一个 library的延伸 using for的应用。


<<:  【Day10】:库函数包装—对於底层暂存器的操纵(上)

>>:  Day 12 态度就像有感染力的病毒

[Day 21] 闭包 (Closure)是什麽?

前言 闭包的观念,其实就和前几天谈到的作用域、变数宣告和作用域的观念有关。只要有清楚知道其中差异,在...

Day28-终於要进去新手村了-HTML DOM 观念介绍

我们上一篇文章讲到了HTML DOM的阶层以及树状图,接下来我们就举两个例子来厘清一下观念,也让我自...

[Day25] HTB Granny

URL : https://app.hackthebox.eu/machines/14 IP : ...

JS 45 - 是否要离开网站?可能无法储存您所做的变更。

大家好! 相信有挑战铁人赛的读者,应该都有这样的疑问: 为什麽关闭浏览器时,不会发出警告来阻止我呢?...

沟通技巧中的利害关系人管理

产品经理平常需要沟通的对象很多,而这些对象对专案的影响程度大小可能不尽相同,为了有效的擅用产品经理自...