您好,登錄后才能下訂單哦!
modifire還可以帶參數,如下面的例子,模擬了游戲中的升級操作。如果玩家等級達到2級,就可以修改名字。如果玩家等級達到10級,就可以修改DNA。
通過帶參數的modifire實現對于代碼的封裝。
1 | pragma solidity^0.4.23; |
通過上面的例子,我們能夠看到帶參數的modifire的使用方法。首先在modifire中添加參數。接著在函數定義中,在修飾符與return返回值之間加上controlLevel(傳遞的參數)
.
例如,當調用changeName函數執行的語句為:
1 | require(level>2); |
例如,當調用changeDNA函數執行的語句為:
1 | require(level>10); |
函數可以有多個modifire,這種情況要相對復雜得多。
我們從下面的例子,來講解多重modifire的執行過程。
1 | contract mulmodifiererDeep{ |
下面的例子中,當執行test方法后,狀態變量a的值會變為2. 我們提到過,modifire中的下劃線指代了函數中的所有語句。
所以執行流程為a = 1 a = 100 a = 2
下面的例子中,使用了多重的modire。
1 | contract mulmodifiererDeep2{ |
在上面的例子中test函數使用了modifire:mod1、mod2
嵌套規則為,首先函數中的a = 100嵌套到mod2的_中。整個語句變為了a = 3; a = 100; a = 4;
接下來,將上面的語句添加到mod1的下劃線中,所以整個執行語句變為了
1 | a = 1; |
最后執行結果為 a = 2。
多重modifire的順序非常的重要的。
下面的例子,和案例2相同但是修改了mod1與mod2在函數中的順序。
1 | contract mulmodifiererDeep2{ |
在上面的例子中test函數使用了modifire:mod2、mod1
嵌套規則為,首先函數中的a = 100嵌套到mod1的_中。整個語句變為了a = 1; a = 100; a = 2;
接下來,將上面的語句添加到mod1的下劃線中,所以整個執行語句變為了
1 | a = 3; |
最后執行結果為 a = 4。
本文鏈接: https://dreamerjonson.com/2018/11/22/solidity-33-modifire-deep/
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。