📜  Solidity-可变范围

📅  最后修改于: 2020-11-04 04:20:57             🧑  作者: Mango


 

局部变量的范围仅限于定义它们的函数,但是状态变量可以具有三种类型的范围。

  • Public-公共状态变量可以在内部以及通过消息进行访问。对于公共状态变量,将生成自动吸气函数。
  • 内部-内部状态变量只能从当前合同或从其衍生的合同内部访问,而无需使用它。
  • 私有-私有状态变量只能从当前合同内部访问,而不能在从其衍生的合同中定义。

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