Đoàn kết - Hợp đồng

Hợp đồng trong Solidity tương tự như một Lớp trong C ++. Hợp đồng có các thuộc tính sau.

  • Constructor - Một hàm đặc biệt được khai báo với từ khóa constructor sẽ được thực thi một lần cho mỗi hợp đồng và được gọi khi một hợp đồng được tạo.

  • State Variables - Các biến trên mỗi Hợp đồng để lưu trữ trạng thái của hợp đồng.

  • Functions - Các chức năng trên mỗi Hợp đồng có thể sửa đổi các biến trạng thái để thay đổi trạng thái của hợp đồng.

Bộ định lượng khả năng hiển thị

Sau đây là các định lượng hiển thị khác nhau cho các hàm / biến trạng thái của một hợp đồng.

  • external- Các chức năng bên ngoài có nghĩa là được gọi bằng các hợp đồng khác. Chúng không thể được sử dụng cho cuộc gọi nội bộ. Để gọi hàm bên ngoài trong hợp đồng, cần phải gọi hàm this. Function_name (). Biến trạng thái không thể được đánh dấu là bên ngoài.

  • public- Các hàm / Biến công khai có thể được sử dụng cả bên ngoài và bên trong. Đối với biến trạng thái công khai, Solidity tự động tạo một hàm getter.

  • internal - Các hàm / Biến nội bộ chỉ có thể được sử dụng trong nội bộ hoặc bằng các hợp đồng dẫn xuất.

  • private - Các hàm / Biến riêng chỉ có thể được sử dụng trong nội bộ và thậm chí không được sử dụng bởi các hợp đồng dẫn xuất.

Thí dụ

pragma solidity ^0.5.0;

contract C {
   //private state variable
   uint private data;
   
   //public state variable
   uint public info;

   //constructor
   constructor() public {
      info = 10;
   }
   //private function
   function increment(uint a) private pure returns(uint) { return a + 1; }
   
   //public function
   function updateData(uint a) public { data = a; }
   function getData() public view returns(uint) { return data; }
   function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//External Contract
contract D {
   function readData() public returns(uint) {
      C c = new C();
      c.updateData(7);         
      return c.getData();
   }
}
//Derived Contract
contract E is C {
   uint private result;
   C private c;
   
   constructor() public {
      c = new C();
   }  
   function getComputedResult() public {      
      result = compute(3, 5); 
   }
   function getResult() public view returns(uint) { return result; }
   function getData() public view returns(uint) { return c.info(); }
}

Chạy chương trình trên bằng các bước được cung cấp trong chương Ứng dụng đầu tiên của Solidity . Chạy nhiều phương pháp Hợp đồng. Đối với E.getComputedResult () theo sau là E.getResult () hiển thị -

Đầu ra

0: uint256: 8