[區塊鏈&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 會有幾個限制。
- 不能被繼承。
- 不能使用昨天所介紹過的
event
- 不能使用儲存功能,也就是不能在 library 儲存 state variables,但可以處理其他 constract 裏面的 state variables。
明天我們來介紹一個 library的延伸 using for的應用。