Solidity - Các biến

Solidity hỗ trợ ba loại biến.

  • State Variables - Các biến có giá trị được lưu trữ vĩnh viễn trong bộ lưu trữ hợp đồng.

  • Local Variables - Các biến có giá trị hiện diện cho đến khi hàm đang thực thi.

  • Global Variables - Các biến đặc biệt tồn tại trong không gian tên toàn cầu được sử dụng để lấy thông tin về blockchain.

Solidity là một ngôn ngữ được định kiểu tĩnh, có nghĩa là trạng thái hoặc kiểu biến cục bộ cần được chỉ định trong khi khai báo. Mỗi biến được khai báo luôn có một giá trị mặc định dựa trên kiểu của nó. Không có khái niệm "không xác định" hoặc "null".

Biến số đưa ra

Các biến có giá trị được lưu trữ vĩnh viễn trong bộ lưu trữ hợp đồng.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}

Biến cục bộ

Các biến có giá trị chỉ có sẵn trong một hàm mà nó được xác định. Các tham số của hàm luôn là cục bộ của hàm đó.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return result; //access the local variable
   }
}

Thí dụ

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData; // State variable
   constructor() public {
      storedData = 10;   
   }
   function getResult() public view returns(uint){
      uint a = 1; // local variable
      uint b = 2;
      uint result = a + b;
      return storedData; //access the state variable
   }
}

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 .

Đầu ra

0: uint256: 10

Biến toàn cục

Đây là những biến đặc biệt tồn tại trong không gian làm việc toàn cầu và cung cấp thông tin về blockchain và các thuộc tính giao dịch.

Tên Lợi nhuận
blockhash (uint blockNumber) trả về (byte32) Băm của khối đã cho - chỉ hoạt động cho 256 khối gần đây nhất, không bao gồm khối hiện tại,
block.coinbase (địa chỉ có thể thanh toán) Địa chỉ của người khai thác khối hiện tại
block.difficulty (uint) Khó khăn khối hiện tại
block.gaslimit (uint) Gaslimit khối hiện tại
block.number (uint) Số khối hiện tại
block.timestamp (uint) Dấu thời gian khối hiện tại dưới dạng giây kể từ kỷ nguyên unix
gasleft () trả về (uint256) Khí còn lại
msg.data (byte calldata) Calldata hoàn chỉnh
msg.sender (địa chỉ có thể thanh toán) Người gửi tin nhắn (người gọi hiện tại)
msg.sig (byte4) Bốn byte đầu tiên của calldata (mã định danh hàm)
msg.value (uint) Số wei đã gửi cùng với tin nhắn
bây giờ (uint) Dấu thời gian khối hiện tại
tx.gasprice (gợi ý) Giá gas giao dịch
tx.origin (địa chỉ thanh toán) Người gửi giao dịch

Tên biến thể rắn

Trong khi đặt tên cho các biến của bạn trong Solidity, hãy ghi nhớ các quy tắc sau.

  • Bạn không nên sử dụng bất kỳ từ khóa nào dành riêng cho Solidity làm tên biến. Những từ khóa này sẽ được đề cập trong phần tiếp theo. Ví dụ, tên biến break hoặc boolean không hợp lệ.

  • Tên biến solidity không được bắt đầu bằng chữ số (0-9). Chúng phải bắt đầu bằng một chữ cái hoặc một ký tự gạch dưới. Ví dụ: 123test là một tên biến không hợp lệ nhưng _123test là một biến hợp lệ.

  • Tên biến solidity có phân biệt chữ hoa chữ thường. Ví dụ: Tên và tên là hai biến khác nhau.