- 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
广告