Dart 中的函数

56 阅读2分钟

1. 函数概念

函数是编程中的基本构建块之一,它是一段可以重复使用的代码,用于执行特定的任务或计算。函数通常接收输入(参数),执行一些操作,然后返回输出(结果)

2. 函数类型

  1. 无参数,无返回值
  2. 有参数,无返回值
  3. 无参数,有返回值
  4. 有参数,有返回值

下面分别一一举例列出:


// 1. 无参, 无返回值
void fun1() {
    print("无参数,无返回值");
}

// 2. 有参数,无返回值
void fun2(String name) {
    print("有参数${name},无返回值");
}

// 3. 无参数,有返回值
String fun3() {
    return "无参数,有返回值";
}

// 4. 有参数,有返回值
String fun4(String name) {
    return "有参数${name},有返回值";
}

3. 函数参数说明

参数是指的是将值传递给函数的变量。参数可以是位置参数、命名参数、默认参数和可选参数。

4. 位置参数

位置参数是指在函数调用时按照顺序传递给函数的参数。位置参数可以在函数定义时指定参数名,但是在函数调用时不需要指定参数名。

 void add(int a, int b) {
    print("$a + $b = ${a + b}");
 }
 void main(){
    add(1,2);
 }

我们还可以为位置参数提供默认值,有时候我们允许只传递一个值. 或者默认值是固定的等等.

void student(String name, Int age, [String sex = "男"]) {
    print("$name, $age, $sex");
}

void circleArea(double r,  [double pi = 3.1415926]) {
    print("$pi * $r * $r = ${pi * r * r}");
}

void main(){
    student("小明", 18);
    student("小明", 18, "女");
    circleArea(3.0);
}

5. 命名参数

命名参数是指在函数调用时指定参数名传递给函数的参数。命名参数可以在函数定义时指定参数名,并且在函数调用时需要指定参数名

void dog(String name, {String color}){
    print("$name, $color");
}

同时你可以通过`require` 关键字来指定参数是否必须传递
```dart
void dog(String name, {required String color}){
    print("$name, $color");
}

在上方的案例当中, color 参数是必须传递的.

另外就是在命名参数当中,你无需再像位置参数那样按照顺序传递参数.

6. 匿名函数

匿名函数(也称为 Lambda 函数或闭包)是一种没有名称的函数。它们通常用于简化代码,尤其是在需要将函数作为参数传递时。

去掉返回类型和函数名,这个函数就叫做匿名函数。

语法:

(){}

例如:

var myFunction = (int a, int b) {
  return a + b;
};
var multiply = (int a, int b) => a * b;

print(multiply(2, 3)); // 输出 6

7. 箭头函数

在 Dart 中,箭头函数(Arrow Functions)是一种简洁的语法,用于定义只包含单个表达式的函数。它们可以使代码更加简洁和可读。 语法:

returnType functionName(parameters) => expression;

示例:

int add(int a, int b) => a + b;

还有无参数的情况下

var greet = () => 'Hello, Dart!';

void main() {
  print(greet()); // 输出 Hello, Dart!
}

注意事项:

  1. 箭头函数只能用于单个表达式。如果需要执行多条语句,应该使用常规函数定义。
  2. 箭头函数的返回值是表达式的结果,无需显式使用 return 关键字。