编译此代码:
pragma solidity ^0.8.17;
contract OverloadModifier {
uint public a = 0;
bytes public b = 0x00;
modifier m(uint _a) { _; }
modifier m(bytes _b) { _; }
function fa () public m(a) {}
function fb () public m(b) {}
}抛出此错误:
DeclarationError: Identifier already declared.
--> OverloadModifier.sol:9:5:
|
9 | modifier m(bytes _b) { _; }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: The previous declaration is here:
--> OverloadModifier.sol:8:5:
|
8 | modifier m(uint _a) { _; }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^假设修饰符在技术上是“函数”,那么又有什么可以防止它们超载呢?让它们超载不是有用的吗?
发布于 2023-04-12 04:06:07
从技术上讲,您可以重载一个修饰符,但这会使代码难以理解,因为修饰符的唯一目的是成为一个独立的函数,可以多次重用它来检查类似的条件。
https://ethereum.stackexchange.com/questions/148831
复制相似问题