在阅读有关第一个地方的内容时,我遇到了以下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);
}
答案 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);
}