gpt4 book ai didi

Dart:如何减少类列表

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

我想减少类列表,例如:

class Product {
final String name;
final double price;

Product({this.name, this.price});
}

List<Product> products = [
Product(name: 'prod1', price: 100.0),
Product(name: 'prod2', price: 300.0),
];

void main() {
var sum = products.reduce((curr, next) => curr.price + next.price);
print(sum);
}

但它会引发错误

错误:无法将“double”类型的值分配给“Product”类型的变量。

最佳答案

reduce 方法的语法指定为:

reduce(E combine(E value, E element)) → E

所以该方法应该返回与两个输入相同的类型。在您的情况下, curr 和 next 值属于 Product 类型,但您返回的是 double 值。

你真正想要使用的是 fold 方法:
fold<T>(T initialValue, T combine(T previousValue, E element)) → T

所以你的代码是:
class Product {
final String name;
final double price;

Product({this.name, this.price});
}

List<Product> products = [
Product(name: 'prod1', price: 100.0),
Product(name: 'prod2', price: 300.0),
];

void main() {
var sum = products.fold(0, (sum, next) => sum + next.price);
print(sum);
}

关于Dart:如何减少类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906101/

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