原文: 《Solidity 極簡入門: 16. 函數重載》

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

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

重載

solidity 中允許函數進行重載(overloading),即名字相同但輸入參數類型不同的函數可以同時存在,他們被視為不同的函數。注意,solidity 不允許修飾器(modifier)重載。

函數重載

舉個例子,我們可以定義兩個都叫saySomething() 的函數,一個沒有任何參數,輸出"Nothing";另一個接收一個string 參數,輸出這個string。

WTF Solidity極簡入門第十六講:函數重載

實參匹配(Argument Matching)

在調用重載函數時,會把輸入的實際參數和函數參數的變量類型做匹配。

如果出現多個匹配的重載函數,solidity 文檔上說會報錯。它給的例子是兩個叫f() 的函數,一個參數為uint8,另一個為uint256。文檔說如果輸入50,既可以被轉換為uint8,也可以被轉換為uint256,因此會報錯。但是我沒遇到:

WTF Solidity極簡入門第十六講:函數重載

總結

這一講,我們介紹了solidity 中函數重載的基本用法:名字相同但輸入參數類型不同的函數可以同時存在,他們被視為不同的函數。

推特: @0xAA_Science

社區: Discord微信群官網wtf.academy

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