美文网首页
浅谈Solidity: 3. 函数类型

浅谈Solidity: 3. 函数类型

作者: 温驭臣 | 来源:发表于2022-10-14 11:34 被阅读0次

    solidity中函数的形式: function <function name> (<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)]

    1,function:声明函数时的固定用法,想写函数,就要以function关键字开头。

    2,<function name>:函数名。

    3,(<parameter types>):圆括号里写函数的参数,也就是要输入到函数的变量类型和名字。

    4,{internal|external|public|private}:函数可见性说明符,一共4种。没标明函数类型的,默认internal。    

            public: 内部外部均可见。(也可用于修饰状态变量,public变量会自动生成 getter函数,用于查询数值)。private: 只能从本合约内部访问,继承的合约也不能用(也可用于修饰状态变量)。external: 只能从合约外部访问(但是可以用this.f()来调用,f是函数名)。internal: 只能从合约内部访问,继承的合约可以用(也可用于修饰状态变量)。

    5,[pure|view|payable]:决定函数权限/功能的关键字。payable(可支付的)带着它的函数,运行的时候可以给合约转入ETH。包含pure跟view关键字的函数是不改写链上状态的,因此用户直接调用他们是不需要付gas的(合约中非pure/view函数调用它们则会改写链上状态,需要付gas)。 pure:不能读取也不能写入存储在链上的状态变量。view:能读取但也不能写入状态变量。

    6,[returns ()]:函数返回的变量类型和名称。

    在以太坊中,以下语句被视为修改链上状态:

    1,写入状态变量。

    2,释放事件。

    3,创建其他合同。

    4,使用selfdestruct.

    5,通过调用发送以太币。

    6,调用任何未标记view或pure的函数。

    7,使用低级调用(low-level calls)。

    8,使用包含某些操作码的内联汇编。

    我是温驭臣,一个Solidity的开发学习者,以上是我的简单总结,如果有缺陷,希望在评论区看到您的补充。

    相关文章

      网友评论

          本文标题:浅谈Solidity: 3. 函数类型

          本文链接:https://www.haomeiwen.com/subject/qweczrtx.html