今天來介紹一個 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的應用。