【易错点 学习笔记】Solidity语法constant/view/pure

一 易错点Pure与View

在Solidity v4.17之前,只有constant,后来有人嫌constant这个词本身代表变量中的常量,不适合用来修饰函数,所以将constant拆成了view和pure。

1.view的作用和constant一模一样,可以读取状态变量但是不能改;
pure则更为严格,pure修饰的函数不能改也不能读状态变量,否则编译通不过。

2.不是所有类型的状态变量都支持用 constant 来修饰,当前支持的仅有值类型和字符串
3.可以将函数声明为 view 类型,这种情况下要保证不修改状态。下面的语句被认为是修改状态:

  • 修改状态变量。
  • 产生事件。
  • 创建其它合约
  • 使用 selfdestruct。
  • 通过调用发送以太币。
  • 调用任何没有标记为 view 或者 pure 的函数。
  • 使用低级调用。
  • 使用包含特定操作码的内联汇编。

4pure函数函数可以声明为 pure ,在这种情况下,承诺不读取或修改状态。
除了上面解释的状态修改语句列表之外,以下被认为是从状态中读取:

  • 读取状态变量。 访问 this.balance 或者
    .balance。
  • 访问 block,tx, msg 中任意成员 (除 msg.sig 和 msg.data 之外)。
  • 调用任何未标记为 pure 的函数。 使用包含某些操作码的内联汇编。

来源:

https://www.jianshu.com/p/5f1bc0d39d79

你可能感兴趣的:(【易错点 学习笔记】Solidity语法constant/view/pure)