内部/外部和公共/私人功能在可靠性方面有什么区别?

mon*_*nie 6 blockchain ethereum solidity smartcontracts

目前正在阅读 Solidity 文档: https://solidity.readthedocs.io/en/develop/types.html#function-types

默认情况下,函数类型是内部的,因此可以省略内部关键字。相比之下,合约函数本身默认是公共的,只有当用作类型名称时,默认是内部的。

这对我来说没有意义。一个函数如何同时是内部函数和公共函数?

我知道internal意味着函数只能在合约内调用,也external可以在合约外调用。所以对我来说,内部是私有的,外部是公共的,但文档听起来好像它可以同时是公共和内部的?

internal/external那么,函数之间和public/private函数方面有什么区别(如果有的话) ?

小智 10

下面是四个关键字的区别:

private意味着它只能从合约内的其他函数调用

internal类似于私有的,但也可以由继承当前合约的合约调用

external只能在合约之外调用

public可以在任何地方调用,无论是内部还是外部。


Rom*_*tin 3

在 Solidity 的术语中internal/external,还使用“两种函数调用”作为描述,而不仅仅是作为访问修饰符。

\n\n

查看合约中有关“可见性和 Getters”的文档部分

\n\n
\n

由于 Solidity 知道两种函数调用(不创建实际 EVM 调用的内部函数(也称为 \xe2\x80\x9cmessage 调用\xe2\x80\x9d)和创建实际 EVM 调用的外部函数),因此有四种类型的可见性对于函数和状态变量。

\n
\n