gpt4 book ai didi

dart - 在函数调用中将int用作num

转载 作者:行者123 更新时间:2023-12-03 04:17:33 24 4
gpt4 key购买 nike

我正在学习Dart,并且定义了一个求和函数来对数字列表求和。

sum(numberList) => numberList.reduce((num a, num b) => a + b);
当我在数字列表上调用它时:
main() {
var nl = [4, 2, 4, 5, 9];
print(sum(nl));
}
我收到错误消息:
type '(num, num) => num' is not a subtype of type '(int, int) => int' of 'combine'
这让我感到困惑,为什么不能在int列表上调用为num类型定义的函数?如何解决这个问题?如果列表“nl”来自我的代码之外,我该如何将 list of int转换为 list of num? (似乎int的列表不是num的列表?感到困惑。)

最佳答案

问题是您在reduce上调用List<int>
该类型是int reduce(int Function(int, int) combine)
这意味着combine函数参数必须是返回int的函数。
您尝试传递一个返回num的函数,但不允许这样做。
您没有静态地捕获它,因为您没有将参数键入sum
尝试将其更改为:

num sum(List<num> numberList) => numberList.reduce((num a, num b) => a + b);
您可以执行的操作是在将列表传递给 List<num>之前,先将其转换为 sum:
print(sum(nl.cast<num>()));

关于dart - 在函数调用中将int用作num,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64665250/

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