这里主要讲解。
- storage
- memory
- calldata
参考资料
storage
…
memory
calldata
calldata
与内存非常相似,因为它是存储项目的数据位置。它是一个包含函数参数的特殊数据位置,仅可用于外部函数调用参数。
Calldata
是存储函数参数的不可修改、非持久性区域,其行为主要类似于内存。
calldata
所用的 gas
会偏低。「这个我没验证过」特别是,这意味着函数的参数数量可能会受到限制。值得注意的实施细节calldata
如下:
- 只能用于函数声明参数(不能用于函数逻辑)
- 它是不可变的(它不能被覆盖和改变)
- 它必须用于外部函数的动态参数
- 它是非持久的(事务完成后值不持久)
1 | pragma solidity 0.5.11; |