this.
使用 this. 即为外部访问
contract C {
uint public data;
function X() public {
data = 3;//内部访问
uint val = this.data();//外部访问
}
}
对于所有 public 状态变量 solidity编译器自动为状态变量生成对应的 getter(访问器)特性
内部访问 getter 即为状态变量,外部访问即为 一个函数
view 函数 pure 函数
可以将函数声明为 view 类型,表示这种情况下函数只能读取状态变量,但不能修改状态变量,即函数不能执行SSTORE(EVM的汇编代码,表示写入),也不能发送和接收以太币。在调用其他函数时只能调用 view 和 pure 函数
下面语句被认为修改了状态
- 修改状态变量
- 创建事件
- 创建其他智能合约
- 使用selfdestruct
- 通过调用发送以太币
- 调用任何没有标记为 view 和 pure 的函数
- 使用低级调用
- 使用包含特定操作码的内联汇编
getter 方法 被默认标记为 view
可以将函数声明为 pure 类型,表示这种情况下函数不读取状态变量,也不能修改状态变量,即函数不能执行SSTORE(EVM的汇编代码,表示写入)和 SLOAD指令,也不能发送和接收以太币。在调用其他函数时只能调用 pure 函数。
以下被认为从状态中读取
读取状态变量
访问this.balance 或者 <address>.balance
访

本文详细介绍了智能合约中的关键概念:this关键字用于外部访问,public状态变量自动带有getter函数。view和pure函数分别限制了对状态变量的读写操作,保证了合约的只读性和不可篡改性。fallback函数作为无名函数,在调用失败或接收以太币时执行,需标记为payable以接收以太币。注意,fallback函数的gas限制和调用成本,应确保其执行效率。
最低0.47元/天 解锁文章

2630

被折叠的 条评论
为什么被折叠?



