目录标题
Solidity函数可见性
函数的可见性可以指定为 external,public ,internal 或者 private;
对于状态变量,不能设置为 external ,默认是 internal。
• external :外部函数作为合约接口的一部分,意味着我们可以从其他合约和交易中调用。 一个外部函数 f不能从内部调用(即 f 不起作用,但 this.f() 可以)。 当收到大量数据的时候,外部函数有时候会更有效率。
• public :public 函数是合约接口的一部分,可以在内部或通过消息调用。对于 public 状态变量, 会自动生成一个 getter 函数。
• internal :这些函数和状态变量只能是内部访问(即从当前合约内部或从它派生的合约访问),不使用 this 调用。
• private :private 函数和状态变量仅在当前定义它们的合约中使用,并且不能被派生合约使用。
// 以下代码编译错误
pragma solidity >=0.4.0 <0.6.0;
contract C {
uint private data;
function f(uint a) private pure returns(uint b) {
return a + 1;
}
function setData(uint a) public {
data = a; }
function getData() public view returns(uint) {
return data; }
function compute(uint a, uint b) internal pure returns (uint)
{
return a + b; }
}
contract D {
function readData() public {
C c = new C();
uint local = c.f(7)