Solidity-variable-scope
提供:Dev Guides
堅牢性-可変範囲
ローカル変数のスコープは、それらが定義されている関数に制限されますが、状態変数は3つのタイプのスコープを持つことができます。
- パブリック-パブリック状態変数は、メッセージを介してだけでなく内部的にアクセスできます。 パブリック状態変数の場合、自動取得関数が生成されます。
- Internal -内部状態変数は、これを使用せずに現在のコントラクトまたはそれに由来するコントラクトから内部的にのみアクセスできます。
- プライベート-プライベート状態変数は、派生コントラクトではなく定義されている現在のコントラクトからのみ内部的にアクセスできます。
例
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
}
}