目前阅读可靠性文档: https://solidity.readthedocs.io/en/develop/types.html#function-types
默认情况下,函数类型是内部函数,因此internal关键字可以 被省略。相比之下,合同职能本身就是公开的 默认情况下,仅当用作类型名称时,默认为 内部。
这对我没有意义。一个功能如何同时是内部和公共的?
我知道internal
意味着只能在合同中调用函数,并且external
可以在合同之外调用。所以对我来说,内部是私有的,外部是公共的,但文档使它听起来像是公共和内部同时?
那么internal/external
和public/private
之间在功能方面有什么区别?
答案 0 :(得分:1)
在Solidity internal/external
的术语中,也使用了“两种函数调用”作为描述,而不仅仅是作为访问修饰符。
Take a look at the documentation section about 'Visibility and Getters' inside the contracts
由于Solidity知道两种函数调用(内部函数调用不创建实际的EVM调用(也称为“消息调用”)和外部函数调用),因此函数和状态变量有四种类型的可见性。
答案 1 :(得分:1)
这是四个关键字之间的区别:
private
表示只能在合同中的其他函数中调用
internal
就像私有的一样,但也可以由继承自当前合同的合同来调用
external
只能在合同外部调用
public
可以在内部和外部的任何地方调用。