在 Solidity 中有 3 种类型的变量:
- 局部变量
- 在函数内声明
- 不存储在区块链上
状态变量
- 在函数外声明
- 存储在区块链上
- 全局变量(提供有关区块链的信息)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Variables {
// State variables are stored on the blockchain.
string public text = "Hello";
uint public num = 123;
function doSomething() public {
// Local variables are not saved to the blockchain.
uint i = 456;
// Here are some global variables
uint timestamp = block.timestamp; // Current block timestamp
address sender = msg.sender; // address of the caller
}
}
术语解释:
局部变量:在函数内声明的变量,不会存储在区块链上。
状态变量:在函数外声明的变量,存储在区块链上。
全局变量:提供有关区块链的信息的变量,例如 block.timestamp 返回当前块的时间戳,msg.sender 返回调用函数的地址。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Variables {
//Local存在函数内存中 调用的时候才有
//state 在函数之外声明 存储在区块链上
//blockchain 存在链上 需要消耗GAS
//global是默认的全局变量,提供有关区块链的信息
string public text = "Hello"; //存在区块链上
uint public num = 123;
function doSomething() public view returns (uint,address){
uint i = 456; //内存变量 在调用这个函数的时候才会使用此变量
uint times = block.timestamp; //当前区块的时间戳,全局变量
address sender = msg.sender;
return (times,sender);
}