我如何 link 列表?
How can I link lists?
你知道将另一个列表中的对象插入到列表中的方法吗?像这样:
List<FoodItem> top10 = [
pizza[1],
burger[0],
snacks[3],
];
这现在听起来可能令人困惑,但我想简要地向您解释一下我为什么需要它。
如您所见,我有不同的食物清单。我现在想创建一个 Top10 列表,显示所有菜肴中最好的 10 道菜。
所以来自 top10 的每个 FoodItem 也是其他列表的成员。
例如,如果最好的菜是 Prosciutto Pizza,那么这道菜在 Top10 列表中排名第一,但也在披萨列表中。
现在,在使用该应用程序时,FoodItem 的一个变量会不时更改。
我希望对变量的更改在其他列表中可见。
你明白了吗?
你快到了。
您可以将前 10 名定义为 'FoodItems',前提是比萨、汉堡和小吃 类 从那里继承。如果出于任何原因不可能,那么您可以将 top10 定义为列表。下面屏幕截图左侧的调试 window 显示 'universalList' 包含两个列表 - 比萨饼和意大利面。
您可以将列表中的对象插入到另一个列表中:
top10.add(2, pizzas.get(0));
在此示例代码中,您将比萨饼列表中的第一个元素插入到 top10 列表的第 2 位。重要的是要知道,当您从列表中插入一个对象时,您插入的是对该对象的引用,而不是该对象的副本,因此该对象是相同的。如果您在披萨的对象中编辑 属性,您也会在 top10 的对象中看到更改(它们都是相同的对象)。
我觉得FoodItem里面有一个score字段来判断它是否比另一个好。如果是这样,你可以添加一个比较功能:
int compareFood(FoodItem food1, FoodItem food2) => food1.score > food2.score ? -1 : 1;
然后,你可以得到一个排序的食物列表:
List<FoodItem> get sortedSnacks {
var list = snacks.toList();
list.sort(compareFood);
return list;
}
前 10 名:
List<FoodItem> get allFoods => [
...pizaa,
...burger,
...snacks,
];
List<FoodItem> get top10 {
var list = allFoods.toList();
list.sort(compareFood);
return list.sublist(0, list.length >= 10 ? 10 : list.length);
}
你知道将另一个列表中的对象插入到列表中的方法吗?像这样:
List<FoodItem> top10 = [
pizza[1],
burger[0],
snacks[3],
];
这现在听起来可能令人困惑,但我想简要地向您解释一下我为什么需要它。 如您所见,我有不同的食物清单。我现在想创建一个 Top10 列表,显示所有菜肴中最好的 10 道菜。 所以来自 top10 的每个 FoodItem 也是其他列表的成员。 例如,如果最好的菜是 Prosciutto Pizza,那么这道菜在 Top10 列表中排名第一,但也在披萨列表中。
现在,在使用该应用程序时,FoodItem 的一个变量会不时更改。 我希望对变量的更改在其他列表中可见。
你明白了吗?
你快到了。
您可以将前 10 名定义为 'FoodItems',前提是比萨、汉堡和小吃 类 从那里继承。如果出于任何原因不可能,那么您可以将 top10 定义为列表。下面屏幕截图左侧的调试 window 显示 'universalList' 包含两个列表 - 比萨饼和意大利面。
您可以将列表中的对象插入到另一个列表中:
top10.add(2, pizzas.get(0));
在此示例代码中,您将比萨饼列表中的第一个元素插入到 top10 列表的第 2 位。重要的是要知道,当您从列表中插入一个对象时,您插入的是对该对象的引用,而不是该对象的副本,因此该对象是相同的。如果您在披萨的对象中编辑 属性,您也会在 top10 的对象中看到更改(它们都是相同的对象)。
我觉得FoodItem里面有一个score字段来判断它是否比另一个好。如果是这样,你可以添加一个比较功能:
int compareFood(FoodItem food1, FoodItem food2) => food1.score > food2.score ? -1 : 1;
然后,你可以得到一个排序的食物列表:
List<FoodItem> get sortedSnacks {
var list = snacks.toList();
list.sort(compareFood);
return list;
}
前 10 名:
List<FoodItem> get allFoods => [
...pizaa,
...burger,
...snacks,
];
List<FoodItem> get top10 {
var list = allFoods.toList();
list.sort(compareFood);
return list.sublist(0, list.length >= 10 ? 10 : list.length);
}