gpt4 book ai didi

dart - 即使到达return语句,函数也返回null

转载 作者:行者123 更新时间:2023-12-03 03:41:44 25 4
gpt4 key购买 nike

我的类中有一个函数,该函数应使用Listid内找到一个对象并返回匹配的对象。

static Category findById(List<Category> categories, String id) {
categories.forEach((category) {
if (category.id == id) {
return category;
}
});
}

但是, findById始终返回 null
调试时, category.idid相等,并且编译器甚至跳入return语句,但返回的值始终是 null

最佳答案

您从错误的范围返回。您实际上是在返回forEach方法,而不是findById。幸运的是,Dart具有内置功能,可以执行您想要的操作,即 List.firstWhere :

static Category findById(List<Category> categories, String id) => 
categories.firstWhere((category) => category.id == id);

您也可以改用 for循环,这也正是 firstWhere所做的。这样,您将返回正确的范围:
static Category findById(List<Category> categories, String id) {
for (Category category in categories)
if (category.id == id) return category;
return null; // no matching element
}

您可以找到 more about scopes here

最后一个 return null是可选的 explained here

关于dart - 即使到达return语句,函数也返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com