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.