当编译一个函数而不将其状态可变标记为pure时,编译器将显示以下警告:
Warning: Function state mutability can be restricted to pure例如:
contract MyContract {
function foo() public {
1 + 2;
}
} 正如预期的那样,编译器显示
Warning: Function state mutability can be restricted to pure
function foo() public {
^ (Relevant source part starts here and spans across multiple lines).如果函数的主体是空的,编译器就不会显示警告。例如:
contract MyContract {
function foo() public {
}
} 在这里,编译器不会像预期的那样显示警告。为什么会这样呢?
测试时使用的版本是0.5.8和0.8.7。
发布于 2023-04-12 23:06:53
编译器不会为您的空函数显示任何警告,因为它无法知道您的意图。如果您添加了一个返回,这应该是不同的。
空函数既不与任何状态交互,也不执行任何计算,所以这就是为什么编译器没有建议任何特定的状态可变限制,比如pure或view
https://ethereum.stackexchange.com/questions/148883
复制相似问题