menu-icon
anue logo
鉅樂部鉅亨號鉅亨買幣
search icon
區塊鏈

Solidity極簡入門|第十七講:庫合約 站在巨人的肩膀上

BlockBeats 律動財經 2022-08-03 15:30

cover image of news article
律動財經圖片

我最近在重新學 solidity,鞏固一下細節,也寫一個「Solidity 極簡入門」,供小白們使用(編程大佬可以另找教程),每周更新 1-3 講。

所有代碼和教程開源在 github:github.com/AmazingAng/WTFSolidity

這一講,我們用 ERC721 的引用的庫合約 String 為例介紹 solidity 中的庫合約(library),並總結了常用的庫函數。

庫函數

庫函數是一種特殊的合約,主要是為了提升 solidity 代碼的復用性和減少 gas fee 而存在。庫合約一般都是一些好用的函數合集(庫函數),由大神或者項目方創作,咱們站在巨人的肩膀上,會用就行了。

  庫合約:站在巨人的肩膀上

他和普通合約主要有以下幾點不同:

不能存在狀態變量不能夠繼承或被繼承

不能接收以太幣

不可以被銷毀 



String 庫合約



String 庫合約是將 uint256 類型轉換為相應的 string 類型的代碼庫,樣例代碼如下:  





他主要包含兩個函數,toString() 將 uint256 轉為 string,toHexString() 將 uint256 轉換為 16 進制,在轉換為 string。

如何使用庫合約

我們用 String 庫函數的 toHexString() 來演示兩種使用庫合約中函數的辦法。

1. 利用 using for 指令:



指令 using A for B; 可用於附加庫函數(從庫 A)到任何類型(B)。添加完指令後,庫 A 中的函數會自動添加為 B 類型變量的成員,可以直接調用。注意:在調用的時候,這個變量會被當作第一個參數傳遞給函數:



2. 通過庫合約名稱調用庫函數:





我們部署合約並輸入 170 測試一下,兩種方法均能返回正確的 16 進制 string 「0xaa」。證明我們調用庫函數成功!   



  成功調用庫函數

總結



這一講,我們用 ERC721 的引用的庫函數 String 為例介紹 solidity 中的庫函數(Library)。99% 的開發者都不需要自己去寫庫合約,會用大神寫的就可以了。我們只需要知道什麼情況該用什麼庫合約。常用的有:

String:將 uint256 轉換為 String

Address:判斷某個地址是否為合約地址

Create2:更安全的使用 Create2 EVM opcode

Arrays:跟數組相關的庫函數  



原文鏈接

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠






Empty