Solidity view函数

solidity view函数,也就是视图函数,是指函数只会读取状态,不会修改状态。

换言之,solidity view函数只会读取链上数据,不会修改链上数据。

如果函数中存在以下语句,则被视为修改状态,编译器将抛出警告。

  • 修改状态变量。
  • 触发事件。
  • 创建合约。
  • 使用selfdestruct
  • 发送以太。
  • 调用任何不是视图函数或纯函数的函数
  • 使用底层调用
  • 使用包含某些操作码的内联程序集。

状态变量的Getter方法默认是view函数。

声明为view图函数,可以在函数声明里,添加view关键字。

示例

// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

contract ViewDemo {
   uint factor = 2;   // 状态变量
   
   function getResult(uint num) public view returns(uint){
      uint result = num * factor;
      return result; 
   }
}

运行上述程序,输入100,输出:

0: uint256: 200

在这个例子中,函数getResult中,只是读取了状态变量factor的值,而没有修改它的值,所以这个函数是一个view函数。

Solidity构造函数是一个特殊函数,它仅能在智能合约部署的时候调用一次,之后就不能再次被调用。Solidity构造函数常用来进行状态变量的初始化工作。Solidity编译器中,使用关键词 constructo ...