dart:对于语法大师,如何在嵌套 class 中交换子树
dart: for the syntax gurus, how to exchange subtree in nested class
我知道如何巧妙地用
替换列表中的单个元素
myDataList = myDataList.map((dataItem) {
return dataItem.id == event.id ?
event.dataUpdatedItem
:
dataItem;
}).toList();
在我的例子中,dataItem 是一个嵌套的 class,就像 List<Person> person
,我只想更新 person.address
of person.id == event.id
。我的 event.dataUpdatedItem
是 Address
类型,event.id
指向 person.id
。
你们经常给我提供脑筋急转弯,用你们将一页代码压缩成两行代码的巧妙表达。在 class 周围使用包装列表也可以,其中包含要更新的嵌套 class 吗?!
我假设你有办法用新地址创建一个新人,所以我们假设它是 built_value
。
person = [for (var p in person)
if (p.id == event.id) p.rebuild((b) => b..address = event.dataUpdatedItem)
else p];
如果Person.address
可以直接更新,不需要替换整个列表,所以:
person.firstWhere((p) => p.id == event.id).address = event.dataUpdatedItem;
我知道如何巧妙地用
替换列表中的单个元素myDataList = myDataList.map((dataItem) {
return dataItem.id == event.id ?
event.dataUpdatedItem
:
dataItem;
}).toList();
在我的例子中,dataItem 是一个嵌套的 class,就像 List<Person> person
,我只想更新 person.address
of person.id == event.id
。我的 event.dataUpdatedItem
是 Address
类型,event.id
指向 person.id
。
你们经常给我提供脑筋急转弯,用你们将一页代码压缩成两行代码的巧妙表达。在 class 周围使用包装列表也可以,其中包含要更新的嵌套 class 吗?!
我假设你有办法用新地址创建一个新人,所以我们假设它是 built_value
。
person = [for (var p in person)
if (p.id == event.id) p.rebuild((b) => b..address = event.dataUpdatedItem)
else p];
如果Person.address
可以直接更新,不需要替换整个列表,所以:
person.firstWhere((p) => p.id == event.id).address = event.dataUpdatedItem;