Trong Solidity, các biến được sử dụng để lưu trữ dữ liệu. Có hai loại biến chính trong Solidity: biến tham số (parameter variables) và biến toàn cục (global variables)
Table of Contents
Biến tham số (parameter variables)
Có phải bạn thường hay thấy các function chứa các biến có tên như _name, _number với dấu gạch chân “_” ở đằng trước. Đây là 1 cách đặt tên phổ biến cho các biến tham chiếu và phân biệt với biến gốc (không bắt buộc).
Biến tham số là các biến được truyền vào một function như một đối số. Chúng được sử dụng để truyền dữ liệu vào hàm và chỉ tồn tại trong phạm vi của function đó. Các biến tham số có thể được sử dụng để thực hiện các tính toán hoặc xử lý dữ liệu trong function. Các biến này được khai báo trong khai báo function, ngay sau tên function.
Bằng cách tham chiếu, điều này có nghĩa là function của bạn được gọi với một tham chiếu đến biến gốc. Do đó, nếu function của bạn thay đổi giá trị của biến mà nó nhận, giá trị của biến gốc cũng sẽ thay đổi.
Ví dụ: Sử dụng parameter variables để truyền dữ liệu vào hàm
Solidity
function add(uint256 a, uint256 b) public {
uint256 c = _a + _b;
// In this function, `_a` and `_b` are parameter variables.
// They are used to store the values passed to the function.
// The value of `c` is calculated using the values of `a` and `b`.
}
Trong ví dụ này, hàm add()
có hai parameter variables là _a
và _b
. Các biến này được sử dụng để lưu trữ các giá trị được truyền vào hàm. Giá trị của c
được tính toán bằng cách cộng _a
và _b
.
Biến toàn cục (global variables)
Biến toàn cục là các biến đặc biệt có sẵn trong phạm vi toàn cục và chủ yếu được sử dụng để cung cấp thông tin về blockchain hoặc là các function tiện ích chung. Các biến toàn cục bao gồm msg.sender
, msg.value
, block.timestamp
, block.number
và nhiều biến khác. Biến toàn cục là các biến có thể được truy cập từ bất kỳ nơi nào trong hợp đồng thông minh. Các biến này được khai báo bên ngoài tất cả các function và khối.
Ví dụ: Sử dụng global variables để truy cập dữ liệu từ bất kỳ nơi nào trong hợp đồng thông minh
Solidity
uint256 public counter = 0;
function incrementCounter() public {
// In this function, `counter` is a global variable.
// It can be accessed from anywhere in the contract.
counter++;
}
Trong ví dụ này, biến counter
là một global variable. Biến này có thể được truy cập từ bất kỳ nơi nào trong hợp đồng thông minh. Trong function incrementCounter()
, giá trị của counter
được tăng lên 1.
So sánh parameter variables và global variables
Các biến tham số và biến toàn cục đều có vai trò quan trọng trong việc lập trình Solidity.
Các biến tham số được sử dụng để truyền dữ liệu vào một hàm. Chúng cho phép chúng ta tùy chỉnh hành vi của hàm bằng cách cung cấp các giá trị đầu vào khác nhau. Điều này giúp cho mã nguồn của chúng ta trở nên linh hoạt và tái sử dụng được.
Biến toàn cục, ngược lại, cung cấp thông tin về blockchain và các hàm tiện ích chung. Chúng cho phép chúng ta truy cập vào các thông tin quan trọng như người gửi giao dịch, giá trị giao dịch, thời gian hiện tại của khối, và nhiều thông tin khác. Điều này giúp cho chúng ta có thể viết các hàm xử lý logic phức tạp liên quan đến blockchain.
Vì vậy, việc sử dụng các biến tham số và biến toàn cục giúp cho chúng ta có thể viết mã nguồn Solidity một cách hiệu quả và linh hoạt hơn.
Dưới đây là bảng so sánh các tính năng chính của parameter variables và global variables:
Tính năng | Parameter variables | Global variables |
---|---|---|
Khai báo | Trong khai báo function | Bên ngoài tất cả các function và struct |
Phạm vi | Chỉ có thể được truy cập trong function | Có thể được truy cập từ bất kỳ nơi nào trong hợp đồng thông minh |
Hiệu suất | Hiệu suất cao hơn | Hiệu suất thấp hơn |
An toàn | An toàn hơn | Ít an toàn hơn |
Dưới đây là một ví dụ minh họa sự khác nhau giữa biến tham số và biến toàn cục:
pragma solidity ^0.8.0;
contract Example {
uint public stateVar;
function exampleFunction(uint _parameterVar) public {
stateVar = _parameterVar + block.timestamp;
}
}
Trong ví dụ trên, _parameterVar
là một biến tham số được truyền vào hàm exampleFunction
như một đối số. Biến này chỉ tồn tại trong phạm vi của hàm exampleFunction
. Trong khi đó, block.timestamp
là một biến toàn cục có sẵn trong phạm vi toàn cục và được sử dụng để lấy thời gian hiện tại của khối.
Kết: Parameter variables và global variables là hai loại biến quan trọng trong Solidity. Mỗi loại biến có những ưu điểm và nhược điểm riêng. Việc lựa chọn loại biến nào phụ thuộc vào nhu cầu cụ thể của ứng dụng.
Vietnam Pham – Click Digital
- If you’d like to invest in blockchain advertising companies, just BUY token Saigon (SGN) at Pancakeswap: https://t.co/KJbk71cFe8 (do not worry about low liquidity)
- Backed by Click Digital Company
- Enhancing blockchain knowledge
- BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter: https://twitter.com/SaigonSGN135
- Staking SGN: http://135web.net
Digital Marketing Specialist