Solidity 定义的函数的属性默认为public。 这就意味着任何一方 (或其它合约) 都可以调用你合约里的函数。
显然,不是什么时候都需要这样,而且这样的合约易于受到攻击。 所以将自己的函数定义为private是一个好的编程习惯,只有当你需要外部世界调用它时才将它设置为public。
定义private函数:
uint[] numbers;
function _addToArray(uint _number) private {
numbers.push(_number);
}
在函数名字后面使用关键字 private 即可。私有函数的名字用(_)起始。
除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal和 external。
internal 和 private 类似,不过, 如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“internal”函数。
external 与public 类似,只不过这些函数只能在合约之外调用 - 它们不能被合约内的其他函数调用。
声明函数 internal 或 external 类型的语法,与声明 private 和 public类 型相同:
uint private appleEaten= 0;
function eat() internal {
appleEaten++;
}
总结:private 意味着它只能被合约内部调用; internal 就像 private 但是也能被继承的合约调用; external 只能从合约外部调用;最后 public 可以在任何地方调用,不管是内部还是外部。
本文深入探讨了Solidity中函数的访问修饰符,包括public、private、internal和external的区别和使用场景。public使函数对外公开,private限制函数仅在合约内调用,internal允许在继承合约中访问,而external则禁止合约内调用。
2万+

被折叠的 条评论
为什么被折叠?



