Solidity - 作用域
局部变量的作用域仅限于定义它们的函数,但状态变量可以具有三种类型的作用域。
Public − 公共状态变量可以在内部以及通过消息访问。 对于公共状态变量,会生成自动 getter 函数。
Internal − 内部状态变量只能从当前合约或从其派生的合约内部访问,而无需使用此变量。
Private − 私有状态变量只能从当前合约内部访问,它们不是在派生合约中定义的。
示例
pragma solidity ^0.5.0;
contract C {
uint public data = 30;
uint internal iData= 10;
function x() public returns (uint) {
data = 3; // internal access
return data;
}
}
contract Caller {
C c = new C();
function f() public view returns (uint) {
return c.data(); //external access
}
}
contract D is C {
function y() public returns (uint) {
iData = 3; // internal access
return iData;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return storedData; //access the state variable
}
}

