Độ vững chắc - Phạm vi thay đổi

Phạm vi của các biến cục bộ được giới hạn trong chức năng mà chúng được định nghĩa nhưng các biến trạng thái có thể có ba loại phạm vi.

  • Public- Các biến trạng thái công khai có thể được truy cập nội bộ cũng như thông qua tin nhắn. Đối với biến trạng thái công khai, một hàm getter tự động được tạo.

  • Internal - Các biến trạng thái bên trong chỉ có thể được truy cập nội bộ từ hợp đồng hiện tại hoặc hợp đồng bắt nguồn từ nó mà không cần sử dụng nó.

  • Private - Các biến trạng thái riêng chỉ có thể được truy cập nội bộ từ hợp đồng hiện tại mà chúng được xác định không có trong hợp đồng dẫn xuất từ ​​nó.

Thí dụ

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