需要帮助理解=> Dart中的符号

时间:2020-10-25 09:39:48

标签: dart syntax

在阅读有关第一个地方的内容时,我遇到了以下Dart代码。我想了解这段代码中到底发生了什么,因为这是我不熟悉的某些语法,尤其是“ =>”符号。

void main() {
  final list = List<Book>.generate(10, (id) => Book(id));
  Book findBook(int id) => list.firstWhere((book) => book.id == id);

  print(findBook(2).name);
  print(findBook(4).name);
  print(findBook(6).name);
}

class Book {
  final int id;

  String get name => "Book$id";

  Book(this.id);
}

1 个答案:

答案 0 :(得分:3)

这就是所谓的Syntaxic sugar。它没有提供特殊功能,但是使开发人员可以更轻松地编写和读取代码。

=>符号的CAS中,它是is a shortcut for a function containing only a return statement。因此,这两个定义完全相同:

String main() {
    return "Hello World"
}
String main() => "Hello World"; 

但是请注意,第二个方法更具可读性。

因此,在您的情况下,如果我们解开所有内容,您的代码将变为:

void main() {
  final list = List<Book>.generate(10, (id) {
    return Book(id);
  });
  Book findBook(int id) {
    return list.firstWhere((book) {
      return book.id == id;
    });
  }

  print(findBook(2).name);
  print(findBook(4).name);
  print(findBook(6).name);
}

class Book {
  final int id;

  String get name {
    return "Book$id";
  }

  Book(this.id);
}
相关问题