Solidity - 變數作用域



區域性變數的作用域僅限於其定義所在的函式,但狀態變數可以有三種作用域。

  • 公共 (Public) − 公共狀態變數可以在內部訪問,也可以透過訊息訪問。對於公共狀態變數,會自動生成一個 getter 函式。

  • 內部 (Internal) − 內部狀態變數只能在當前合約或從其派生的合約中內部訪問,無需使用 this。

  • 私有 (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
   }
}
廣告

© . All rights reserved.