📜  Dart不同类型的函数(1)

📅  最后修改于: 2023-12-03 15:14:36.754000             🧑  作者: Mango

Dart不同类型的函数

Dart是一种面向对象的编程语言,它有许多不同类型的函数,本文将介绍这些函数及其用法。

普通函数

普通函数是最基本的函数类型,它们定义在类或库之外。它们通常返回一个值或为空。以下是一个简单的例子:

int addNumbers(int a, int b) {
  return a + b;
}

在上面的例子中,addNumbers是一个普通函数,它接受两个整数参数并返回它们的和。

匿名函数

匿名函数是没有名称的函数,它们可以作为参数传递给其他函数。这种函数通常用于回调函数。以下是一个例子:

void processList(List<int> list, Function(int value) func) {
  list.forEach((item) => func(item));
}

在上面的例子中,processList函数接受一个整数列表和一个函数参数。该函数参数是一个匿名函数,它被传递给forEach方法用于处理列表中的每个元素。

闭包函数

闭包函数是一个函数,它可以捕获其作用域中的变量。这使得它们可以访问并修改这些变量,即使这些变量的作用域已经结束。下面是一个例子:

Function makeAdder(int start) {
  return (int addBy) => start + addBy;
}

void main() {
  var add5 = makeAdder(5);
  print(add5(2)); // 输出7
}

在上面的例子中,makeAdder函数返回一个匿名函数,该函数可以访问makeAdder的作用域中的变量start。这使得返回的函数可以在调用它时使用makeAdder中的值。

Getter函数

Getter函数是一种特殊的函数,它用来获取一个类的属性值。下面是一个例子:

class Person {
  String name;

  Person(this.name);

  String get greeting => 'Hello, $name.';
}

void main() {
  var person = Person('John');
  print(person.greeting); // 输出 "Hello, John."
}

在上面的例子中,greeting是一个getter函数,它返回一个字符串。当调用person.greeting时,它将返回'Hello, John.'

Setter函数

Setter函数与Getter函数类似,但它们用于设置属性值。以下是一个例子:

class Person {
  String name;

  Person(this.name);

  set greeting(String value) => name = value.toUpperCase();
}

void main() {
  var person = Person('John');
  person.greeting = 'Hello';
  print(person.name); // 输出 "HELLO"
}

在上面的例子中,greeting是一个setter函数,它将传递的值转换为大写字母,并将其设置为name属性的值。

扩展函数

扩展函数允许向现有类添加新的函数,而无需修改类的代码。以下是一个例子:

extension NumberParsing on String {
  int parseInt() => int.parse(this);
}

void main() {
  var number = '42';
  print(number.parseInt()); // 输出42
}

在上面的例子中,parseInt是一个扩展函数,它被添加到基本的String类中。这使得我们可以调用字符串的parseInt方法来获取它的整数值。

以上是Dart不同类型的函数的介绍,它们都可以使用不同的方式完成编程任务。熟悉这些函数,可以使您的代码更加清晰,模块化和可重用。