- 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 - 限制访问
- 坚固进阶
- Solidity - 合约
- 坚固性——继承
- Solidity - 构造函数
- Solidity - 抽象合约
- Solidity - 接口
- Solidity - 库
- 坚固性 - 装配
- Solidity - 活动
- Solidity - 错误处理
- Solidity 有用资源
- Solidity - 快速指南
- Solidity - 有用的资源
- 坚固性 - 讨论
Solidity - 库
库与合约类似,但主要用于重用。库包含其他合约可以调用的函数。Solidity 对库的使用有一定的限制。以下是 Solidity 库的主要特征。
库函数如果不修改状态可以直接调用。这意味着纯函数或视图函数只能从库外部调用。
图书馆不能被销毁,因为它被认为是无状态的。
库不能有状态变量。
库不能继承任何元素。
库不能被继承。
例子
尝试以下代码来了解库在 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 First Application章节中提供的步骤运行上述程序。
注意- 在单击部署按钮之前从下拉列表中选择测试。
输出
0: uint256: 3
用于
使用 A 代替 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 First Application章节中提供的步骤运行上述程序。
注意- 在单击部署按钮之前从下拉列表中选择测试。
输出
0: uint256: 3