WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

This article is not available in the current language yet. Showing the original version.
本文用ERC721的引用的库函数String为例介绍solidity中的库函数。

原文:《Solidity 极简入门: 17. 库合约 站在巨人的肩膀上》

我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。

所有代码和教程开源在 github:github.com/AmazingAng/WTFSolidity

这一讲,我们用 ERC721 的引用的库合约 String 为例介绍 solidity 中的库合约(library),并总结了常用的库函数。

库函数

库函数是一种特殊的合约,主要是为了提升 solidity 代码的复用性和减少 gas fee 而存在。库合约一般都是一些好用的函数合集(库函数),由大神或者项目方创作,咱们站在巨人的肩膀上,会用就行了。

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

库合约:站在巨人的肩膀上

他和普通合约主要有以下几点不同:

不能存在状态变量不能够继承或被继承

不能接收以太币

不可以被销毁

String 库合约

String 库合约是将 uint256 类型转换为相应的 string 类型的代码库,样例代码如下:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

他主要包含两个函数,toString() 将 uint256 转为 string,toHexString() 将 uint256 转换为 16 进制,在转换为 string。

如何使用库合约

我们用 String 库函数的 toHexString() 来演示两种使用库合约中函数的办法。

1. 利用 using for 指令:

指令using A for B;可用于附加库函数(从库A)到任何类型(B)。添加完指令后,库 A 中的函数会自动添加为 B 类型变量的成员,可以直接调用。注意:在调用的时候,这个变量会被当作第一个参数传递给函数:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

2. 通过库合约名称调用库函数:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

我们部署合约并输入 170 测试一下,两种方法均能返回正确的 16 进制 string「0xaa」。证明我们调用库函数成功!

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

成功调用库函数

总结

这一讲,我们用 ERC721 的引用的库函数 String 为例介绍 solidity 中的库函数(Library)。99% 的开发者都不需要自己去写库合约,会用大神写的就可以了。我们只需要知道什么情况该用什么库合约。常用的有:

String:将 uint256 转换为 String

Address:判断某个地址是否为合约地址

Create2:更安全的使用 Create2 EVM opcode

Arrays:跟数组相关的库函数

推特:@0xAA_Science

社区:Discord微信群官网 wtf.academy

所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity

Share to:

Author: 0xAA

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: 0xAA. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
It is suspected that the Dragonfly address transferred 137 million SKY tokens to Coinbase, a decrease in value of more than half compared to when the tokens were withdrawn.
PANews Newsflash