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 函数。
以下被认