我沒有得到這兩個函式之間的區別,是否會回傳相同的結果?
address oldVoter;
modifier checkSender(address actualVoter) {
require(oldVoter != actualVoter);
_;
}
function changeVote(address caller)public {
oldVoter = caller;
}
function changeVote() public checkSender(msg.sender){
olderVoter = caller;
}
uj5u.com熱心網友回復:
這個函式是用checkSender修飾符修改的:
function changeVote() public checkSender(msg.sender){
olderVoter = caller;
}
因為它被修改了,你可以看到這個函式是這樣的:
function changeVote() public checkSender(msg.sender){
require(oldVoter != actualVoter);
// "_" in modifier is placeholder. saying that place the modified function here
olderVoter = caller;
}
還有另一個具有相同名稱的函式changeVote,但是如果您注意到它沒有任何修飾符并且沒有任何引數。對于傳入的引數,具有相同的函式名稱和不同數量的不同資料型別的引數是絕對合法的。
您可以在 Solidity 的同一范圍內為同一函式名稱定義多個定義。這稱為function overloading. 函式的定義必須因引數串列中的引數型別和/或引數數量而異。確定有效函式簽名時不考慮回傳型別。
uj5u.com熱心網友回復:
你沒有從你的函式中回傳任何東西。changeVote(address caller)(第一個)設定oldVoter為caller輸入。第二個不應該編譯,因為caller它沒有定義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/401170.html
下一篇:vb.net新年第四個星期二
