solidity 引用类型修饰符memory、calldata与storage 常量修饰符Constant与Immutable区别
2023-04-18 15:26:45 时间
在solidity语言中
引用类型修饰符(引用类型为存储空间不固定的数值类型)
memory、calldata与storage,它们只能修饰引用类型变量,比如字符串、数组、字节等...
memory 适用于方法传参、返参或在方法体内使用,使用完就会清除掉,释放内存
calldata 仅适用于方法传参,修饰该变量的值不能修改
storage 仅适用于方法体内,而且它的指针必须指向链上数据。使用完,链上数据将保存最新状态
常量修饰符
constant 编译前已经确定,编译后不能再修改常量的值
constant 它不是状态变量,所以它不储存在插槽(Slot)里面,获取该常量的方法修饰必须是Pure,而不是View
immutable 它是状态变量,所以它储存在插槽(Slot)里,获取该变量的方法修饰必须是View,而不是Pure
immutable 必须在构造函数里面赋值,之后就不能再修改
contract ConstantImmutable{
string private constant name ="Thinkingchain";
uint private immutable age;
constructor(uint256 _age){
age = _age;
//age = 10;
}
function getName() public pure returns(string memory){
return name;
}
function getAge() public view returns(uint){
return age;
}
/*
function setAge() public{
age++;
}
*/
}
相关文章
- 03 uniapp/微信小程序 项目day03
- MatrixOne从入门到实践03——部署MatrixOne
- HTML介绍
- 9 个美观大气的后台管理系统
- 浏览器渲染和原理
- Linux 利用Cgroup 资源控制
- 面试 考察网络请求HTTP相关知识(第六天!)
- 开源公开课丨大数据调度系统Taier任务调度介绍
- Hadoop常见的文件格式及压缩算法
- 在windows上用docker desktop安装StoneDB
- 浏览器同源策略
- 【StoneDB Class】入门第二课:StoneDB整体架构解析
- 用HTTP服务的方式集成 learned cardinality estimation 方法进 Postgresql
- 【StoneDB研发日志】union功能bug记录
- 前端首屏渲染时间的极致优化
- Vue项目打包成docker镜像部署
- VS Code For Web 深入浅出 -- 导读篇
- <video>poster属性不生效问题
- HTTP协议及状态码
- ETCD快速入门-03 常用命令