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

Need help understanding => symbol in Dart

我在阅读 first where 时遇到了以下 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);
}

这就是所谓的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);
}