如何从飞镖列表中添加两个值
Posted
技术标签:
【中文标题】如何从飞镖列表中添加两个值【英文标题】:How to add two values from list in dart 【发布时间】:2022-01-20 19:48:10 【问题描述】:这是比萨饼价格列表
const pizzaPrices =
'margherita': 5.5,
'pepperoni': 7.5,
'vegetarian': 6.5,
;
如何计算给定订单的总数。 如果是玛格丽塔和意大利辣香肠,那么应该是 13 美元。
const order = ['margherita', 'pepperoni'];
如何添加到列表中
【问题讨论】:
【参考方案1】: const pizzaPrices =
'margherita': 5.5,
'pepperoni': 7.5,
'vegetarian': 6.5,
;
const order = ['margherita', 'pepperoni'];
var total=0.0;
order.forEach((item)
total+=pizzaPrices[item]??0.0;
);
print("Total : "+total.toString());
【讨论】:
这里的if
声明是不必要的。将if
的主体移动到forEach
回调中,并完全摆脱if
。
好吧,编辑后,我觉得很好。【参考方案2】:
有几种方法可以计算总数。一种方法是使用fold
:
final total =
order.fold<double>(0.0, (prev, elem) => prev + pizzaPrices[elem]!);
另一种方法是遍历订单并命令式地将总数相加:
var total = 0.0;
for (final elem in order)
total += pizzaPrices[elem]!;
为了添加到您的列表中,您可以调用列表中的add
方法:
order.add('vegetarian');
但是,const
列表无法修改,因此您必须将 order
更改为声明为 final
或 var
:
final order = ['margherita', 'pepperoni'];
【讨论】:
【参考方案3】:因此,如果您使用它,则不必定义自己的 ```fold`` 函数。
var sum = [1, 2, 3].reduce((a, b) => a + b);
您可以访问此以获得更多信息,https://github.com/dart-lang/sdk/issues/1649
或者
num sum = 0;
for (num e in [1,2,3])
sum += e;
【讨论】:
我建议不要使用reduce
来支持fold
。原因是,reduce
在集合为空时会抛出异常。想象一下,如果您想在客户选择商品时显示订单的成本,订单一开始会是空的,如果您没有额外的代码来处理这种情况,这将导致异常。【参考方案4】:
const pizzaPrices =
'margherita': 5.5,
'pepperoni': 7.5,
'vegetarian': 6.5,
;
const order = ['margherita', 'pepperoni'];
var total=0.0;
order.forEach((item)
pizzaPrices.forEach((name,price)
if(name==item)
total=total+price;
);
);
print("Total : "+total.toString());
【讨论】:
这不能有效地利用地图。而不是使用foreach
循环遍历每个映射条目,只需使用item
变量将[]
下标到pizzaPrices
映射中。
是的,你是对的,请检查我的第二个答案【参考方案5】:
void main()
const pizzaPrices =
'margherita': 5.5,
'pepperoni': 7.5,
'vegetarian': 6.5,
;
var x = pizzaPrices['margherita'];
var y = pizzaPrices['pepperoni'];
List xy = [];
xy.add(x);
xy.add(y);
double somme = 0;
xy.forEach((var element) => somme += element);
print(somme);
【讨论】:
以上是关于如何从飞镖列表中添加两个值的主要内容,如果未能解决你的问题,请参考以下文章