您好,欢迎来到刀刀网。
搜索
您的当前位置:首页Solidity 智能合约基础入门(第二章)

Solidity 智能合约基础入门(第二章)

来源:刀刀网


函数

在Solidity中,函数是用来执行特定任务的代码块。它们可以被定义在合约中,并被其他代码或外部调用。

1.solidity中函数的形式:

    function <function name> (<parameter types>){public|private|internal|external}[pure|view|payable] [returns (<return types>)]

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

  • <function name>:函数名。

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

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

  • [pure|view|payable]:决定函数权限/功能的关键字。payable(可支付的)很好理解,带着它的函数,运行的时候可以给合约转入ETHpureview的介绍见下一节。

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

 2.函数可见性

Solidity中函数的可见性修饰符:publicprivateinternalexternal,用于控制谁可以调用函数。

external 修饰符只能用于函数声明,而不能用于函数定义。这意味着在函数定义的代码块中,无法使用 external 修饰符。 

3.函数可选性

pureviewpayable是Solidity中的函数可选性关键字,用于进一步定义函数的行为,由于其他编程语言没有类似的关键字,所以我们单独了解一下:

  1. pure关键字:使用 pure 关键字修饰的函数表示它不会修改合约的状态,也不会读取合约的状态或全局变量,仅通过输入参数计算并返回结果。这样的函数可以在任何可见性修饰符内使用。

    示例:

    function add(uint a, uint b) public pure returns (uint) {
        return a + b;
    }
    

    在这个示例中,add 函数被定义为 pure,并且在合约的任何部分都可以调用。它不会修改合约状态,也不会读取状态变量,只是简单地计算输入参数的和并返回结果。

  2. view关键字:使用 view 关键字修饰的函数表示它不会修改合约的状态,但会读取合约的状态或全局变量。这样的函数可以在任何可见性修饰符内使用。

    示例:

    function getBalance(address account) public view returns (uint) {
        return balances[account];
    }
    

    在这个示例中,getBalance 函数被定义为 view,它可以在合约的任何部分被调用。它不会修改合约状态,只是简单地读取 balances 的映射状态变量的值并返回结果。

  3. payable关键字:使用 payable 关键字修饰的函数表示它可以接收以太币(ether)作为调用的一部分,并且可能会修改合约的状态。

    示例:

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }
    

    在这个示例中,deposit 函数被定义为 payable,它可以在合约的任何部分被调用,允许发送以太币到合约并将其存储在发送者的账户中。

view 和 pure 函数在内部调用时,也只能调用其他 view 或 pure 函数,而不能调用任何可能修改合约状态的函数。

4.返回值 return和returns

在Solidity中,函数可以通过使用 return 或 returns 关键字来返回值给函数的调用者,他们的区别在于:

  • returns加在函数名后面,用于声明返回的变量类型及变量名;
  • return用于函数主体中,返回指定的变量。
  1. 使用 return 关键字:如果函数只有一个返回值,可以使用 return 关键字来返回结果。

    示例:

    function add(uint a, uint b) public pure returns (uint) {
        return a + b;
    }
    

    在这个示例中,add 函数接受两个参数 a 和 b,并返回它们的和。在函数体中使用 return 关键字将结果返回给函数的调用者。

  2. 使用 returns 关键字:如果函数有多个返回值,应该使用 returns 关键字来明确声明每个返回值的类型和名称。

    示例:

    function divide(uint a, uint b) public pure returns (uint quotient, uint remainder) {
        quotient = a / b;
        remainder = a % b;
    }
    

    在这个示例中,divide 函数接受两个参数 a 和 b,并将它们进行除法运算,返回商 quotient 和余数 remainder。通过 returns 关键字明确指定了两个返回值的类型和名称,但是,returns 关键字只能在函数的可见性修饰符之后声明,因此需要将它们放在函数签名的最后。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务