Solidity 学习笔记
通过学习Solidity,然后输出文章检验自己的学习成果Github仓库
欢迎大家关注我的X
常量,但是少了一些约束构造函数中初始化或在声明时初始化,但初始化后就不能被修改了,这样可以节省gas,提高合约的安全性immutableconstant不同,string和bytes不可以声明为immutable,Solidity 0.8.21之前,如果不对不可变变量,在构造函数或声明时初始化赋值,会报TypeError: Construction control flow ends without initializing all immutable state variables.该例子是如何对不可变变量进行赋值
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract Immutable {
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
uint public immutable MY_LOVE = 1118;
uint public immutable NO_USAGE;
constructor(uint _myUint){
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
}
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
uint public immutable MY_LOVE = 1118;
uint public immutable NO_USAGE;
NO_USAGE 是用来展示不对不可变变量进行初始化,但是由于Solidity对每个变量都有默认值,所以部署后,访问这个值会返回0constructor(uint _myUint){
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
不可变变量必须在构造函数的时候就赋值,构造函数只会在合约部署的时候调用一次