一 . Solidity 支持三种类型的变量:
- 状态变量 – 变量值永久保存在合约存储空间中的变量。
- 局部变量 – 变量值仅在函数执行过程中有效的变量,函数退出后,变量无效。
- 全局变量 – 保存在全局命名空间,用于获取区块链相关信息的特殊变量。
-
状态变量 contract Test {
string public name;
function setName(string memory _n) public {
name = _n;
}
}
-
局部变量 contract Test {
function get()public pure returns(uint){
uint a = 1;
uint b = 2;
return a+b;
}
}
-
全局变量 contract Test {
function get()public view returns(uint){
return block.number;
}
}
更多的全局变量:
二. Solidity 支持两种类型的常量:
- constant – 可修饰字符串、值类型,对于constant 常量, 他的值在编译时确定。
- immutable – 可修饰值类型,对于immutable 常量, 他的值在部署时确定。
? ps:使用constant 和immutable 可以节省gas
contract A {
string constant s1 = "abc";
// string immutable s2 = "abc"; //error
uint public immutable a;
address public immutable owner = msg.sender;
// uint[3] constant a = [1,2,3]; //error
constructor(uint _a){
a = _a;
}
}
|