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

현재 언어 번역이 없어 원문을 표시합니다.
本文用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

공유하기:

작성자: 0xAA

이 글은 PANews 입주 칼럼니스트의 관점으로, PANews의 입장을 대표하지 않으며 법적 책임을 지지 않습니다.

글 및 관점은 투자 조언을 구성하지 않습니다

이미지 출처: 0xAA. 권리 침해가 있을 경우 저자에게 삭제를 요청해 주세요.

PANews 공식 계정을 팔로우하고 함께 상승장과 하락장을 헤쳐나가세요
PANews APP
드래곤플라이 주소가 1억 3700만 개의 SKY 토큰을 코인베이스로 이체한 것으로 추정되는데, 이는 토큰이 인출되었을 당시 가치의 절반 이상 하락한 수치입니다.
PANews 속보