- Solidity 教程
- Solidity - 首頁
- Solidity - 概述
- Solidity - 環境搭建
- Solidity - 基本語法
- Solidity - 第一個應用
- Solidity - 註釋
- Solidity - 資料型別
- Solidity - 變數
- Solidity - 變數作用域
- Solidity - 運算子
- Solidity - 迴圈
- Solidity - 條件判斷
- Solidity - 字串
- Solidity - 陣列
- Solidity - 列舉
- Solidity - 結構體
- Solidity - 對映
- Solidity - 型別轉換
- Solidity - 以太坊單位
- Solidity - 特殊變數
- Solidity - 樣式指南
- Solidity 函式
- Solidity - 函式
- Solidity - 函式修飾符
- Solidity - View 函式
- Solidity - Pure 函式
- Solidity - 回退函式
- 函式過載
- 數學函式
- 加密函式
- Solidity 常用模式
- Solidity - 提款模式
- Solidity - 訪問限制
- Solidity 高階
- Solidity - 合約
- Solidity - 繼承
- Solidity - 建構函式
- Solidity - 抽象合約
- Solidity - 介面
- Solidity - 庫
- Solidity - 彙編
- Solidity - 事件
- Solidity - 錯誤處理
- Solidity 有用資源
- Solidity - 快速指南
- Solidity - 有用資源
- Solidity - 討論
Solidity - 庫
庫類似於合約,但主要用於重用。庫包含其他合約可以呼叫的函式。Solidity 對庫的使用有一些限制。以下是 Solidity 庫的關鍵特性。
如果庫函式不修改狀態,則可以直接呼叫它們。這意味著只有純函式或 View 函式才能從庫外部呼叫。
庫不能被銷燬,因為它被假定為無狀態的。
庫不能有狀態變數。
庫不能繼承任何元素。
庫不能被繼承。
示例
嘗試以下程式碼來了解庫在 Solidity 中是如何工作的。
pragma solidity ^0.5.0;
library Search {
function indexOf(uint[] storage self, uint value) public view returns (uint) {
for (uint i = 0; i < self.length; i++) if (self[i] == value) return i;
return uint(-1);
}
}
contract Test {
uint[] data;
constructor() public {
data.push(1);
data.push(2);
data.push(3);
data.push(4);
data.push(5);
}
function isValuePresent() external view returns(uint){
uint value = 4;
//search if value is present in the array using Library function
uint index = Search.indexOf(data, value);
return index;
}
}
使用 Solidity 第一個應用 章節中提供的步驟執行以上程式。
注意 - 在點選部署按鈕之前,從下拉選單中選擇測試。
輸出
0: uint256: 3
使用 For
指令 using A for B; 可用於將庫 A 的庫函式附加到給定的型別 B。這些函式將使用呼叫方型別作為其第一個引數(使用 self 標識)。
示例
嘗試以下程式碼來了解庫在 Solidity 中是如何工作的。
pragma solidity ^0.5.0;
library Search {
function indexOf(uint[] storage self, uint value) public view returns (uint) {
for (uint i = 0; i < self.length; i++)if (self[i] == value) return i;
return uint(-1);
}
}
contract Test {
using Search for uint[];
uint[] data;
constructor() public {
data.push(1);
data.push(2);
data.push(3);
data.push(4);
data.push(5);
}
function isValuePresent() external view returns(uint){
uint value = 4;
//Now data is representing the Library
uint index = data.indexOf(value);
return index;
}
}
使用 Solidity 第一個應用 章節中提供的步驟執行以上程式。
注意 - 在點選部署按鈕之前,從下拉選單中選擇測試。
輸出
0: uint256: 3
廣告