📜  Solidity – 功能

📅  最后修改于: 2022-05-13 01:55:15.157000             🧑  作者: Mango

Solidity – 功能

函数基本上是一组可以在程序中的任何地方重复使用的代码,一般可以节省内存的过度使用,减少程序的运行时间。创建一个函数可以减少一遍又一遍地编写相同代码的需要。借助函数,可以将一个程序分成许多小段代码,以便更好地理解和管理。

声明一个函数

在 Solidity 中,通常使用函数关键字定义函数,后跟函数的名称,该名称是唯一的,并且与任何保留关键字都不匹配。函数还可以有一个参数列表,其中包含参数的名称和数据类型。函数的返回值是可选的,但在solidity 中,函数的返回类型是在声明时定义的。

function function_name(parameter_list) scope returns(return_type) {
       // block of code
}
// Solidity program to demonstrate 
// function declaration
pragma solidity ^0.5.0;
  
// Creating a contract
contract Test {
  
   // Defining function to calculate sum of 2 numbers
   function add() public view returns(uint){
      uint num1 = 10; 
      uint num2 = 16;
      uint sum = num1 + num2;
      return sum;
   }
}

输出 :
声明一个函数

在上面的例子中,你一定见过“view”的用法。函数中的视图确保它们不会修改函数的状态。如果函数的状态,编译器将抛出警告。

  • 修改状态变量。
  • 发射事件。
  • 创建其他合同。
  • 使用自毁。
  • 通过调用发送以太币。
  • 调用任何未标记为纯或视图的函数。
  • 使用包含某些操作码的内联汇编。
  • 使用低级调用。

函数调用

当用户想要执行该函数时调用该函数。在 Solidity 中,只需在需要调用的地方写入函数的名称即可调用该函数。调用时可以传递不同的参数给函数,多个参数可以传递给一个函数,用逗号分隔。

// Solidity program to demonstrate
// function calling
pragma solidity ^0.5.0;
  
// Creating a contract
contract Test {
  
   // Defining a public view function to demonstrate
   // calling of sqrt function
   function add() public view returns(uint){
      uint num1 = 10; 
      uint num2 = 16;
      uint sum = num1 + num2;
      return sqrt(sum); // calling function
   }
  
   //Defining public view sqrt function
   function sqrt(uint num) public view returns(uint){
       num = num ** 2;
       return num;
   }
}

输出 :
函数调用

退货声明

return 语句是solidity 提供的可选语句。它是函数的最后一条语句,用于从函数返回值。在 Solidity 中,一个函数可以返回多个值。要从函数返回值,应在函数声明时定义返回值的数据类型。

// Solidity program to demonstrate 
// return statements
pragma solidity ^0.5.0;
  
// Creating a contract
contract Test {
  
   // Defining a public view function to
   // demonstrate return statement
   function return_example() public view returns(uint, uint, uint, string memory){
      uint num1 = 10; 
      uint num2 = 16;
      uint sum = num1 + num2;
      uint prod = num1 * num2;
      uint diff = num2 - num1;
      string memory msg = "Multiple return values";
      return (sum, prod, diff, msg); 
   }
}

输出 :
退货声明