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 } }