Solidity:函数(function)的用法及其属性

注:学习笔记,仅供参考,如有错误,烦请指正

1. Solidity中function声明格式

solidity 函数的完整声明格式为:

function 函数名(参数)  public|private|internal|external  pure|view|constant  无返回值|returns (返回值类型)

2. 状态变量访问权限:pure/ view/ constant

只有当函数有返回值的情况下,才需要使用 pure 、 view 、 constant

  • pure : 函数即不读取也不修改状态变量,当函数返回值为自变量而非变量时,使用 pure。
  • view : 函数读取但不修改状态变量,当函数返回值为全局变量或属性时,使用 view。这里的状态变量还包含区块链的内建对象数据、时间戳等。
  • constant : 可以理解为 view 的旧版本,与 view 是等价的

注: 如果一个函数中带了关键字 view 或 constant ,就不能修改状态变量的值。但凡是是带了这两个关键字,区块链就默认只是向区块链读取数据,读取数据不需要花gas,但是不花gas就不可能修改状态变量的值。写入数据或者是修改状态变量的值都需要花费gas。

如果函数不加pure或view,则代表会修改状态变量的值

3. 函数的访问权限:public/ private/ internal/ external

以太坊有四种函数类型,public private internal external

  • public:有最大的访问权限,可以在外部内部调用,可以继承。任何人都可以调用该函数,包括DAPP的使用者。
  • private:不能被继承,不能在外部调用,可以在内部调用。只有合约本身可以调用该函数,private 仅限内部访问,子类不能继承、不能访问。
  • internal:可以在内部被调用,不能在外部被调用,可以被继承。子类可以继承、可以访问,当前类可以访问。
  • external:不能在内部调用,可以在外部调用,可以被继承,如果强行调用,通过“地址.”,例如:this.func()。子类可以继承、可以访问,当前类不能访问。

猜你喜欢

转载自blog.csdn.net/runrundream/article/details/126689526
今日推荐