Solidity 学习笔记
通过学习Solidity
,然后输出文章检验自己的学习成果Github仓库
欢迎大家关注我的X
常量
,但是少了一些约束构造函数
中初始化或在声明时
初始化,但初始化后就不能被修改了,这样可以节省gas
,提高合约的安全性immutable
constant
不同,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
对每个变量都有默认值,所以部署后,访问这个值会返回0
constructor(uint _myUint){
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
不可变变量
必须在构造函数的时候就赋值,构造函数
只会在合约部署的时候调用一次