我读过这的文章和这篇所以。我理解修饰符的功能。当修饰符放在具有间距的函数上时,它们将按放置顺序进行计算,从而创建一个And条件。但是,我想了解如何放置多个修饰符,以便计算其他布尔条件(例如OR )的组合?
例如,
modifier modA {
// verify something
_;
// verify something
_;
}
modifier modB {
// verify something
_;
// verify something
_;
}
function Fun() modA modB {
// Do something
}
在本例中,modA和modB将执行。但是否可以利用它们形成或形成条件呢?
发布于 2018-02-13 21:50:38
没有一条直接的路可走。我会解释原因的。修饰符就像一个宏函数,编译时它会用它的驱动实现来代替你的修饰符。在这里,_;用您的函数实现替换。
contract ModiferTesting {
uint public a;
uint public b;
uint public c;
modifier modA() {
a = a + 1;
_;
}
modifier modB() {
b = b + 1;
_;
b = b + 1;
_;
b = b + 1;
_;
}
function test() public modA modB {
c = c + 1;
}
}
如果您调试,上面的代码可以找到a=1、b=3、c=3
尝试编写检查的或条件的其他修饰符。
https://ethereum.stackexchange.com/questions/39557
复制