gpt4 book ai didi

flutter - Dart,for循环中使用的int类型必须实现iterable

转载 作者:行者123 更新时间:2023-12-03 08:06:43 25 4
gpt4 key购买 nike

我想使用 Dart for…in loop在此函数中,但即使我将 arr 声明为 Iterable<int>,我仍然面临此错误

功能:

void sumOfTwoNumbers(int targetSum, Iterable<int>  arr) {
for (int i in arr.length-1) {
//stuff
}
}

虽然它正在使用正常的 for 循环,但我不知道如何解决这个问题,如果有任何帮助,我们将不胜感激

最佳答案

因为arr.length您正在尝试迭代 int

arr类型为Iterable声明中预期的内容:

for (var T element in Iterable<T>) { /* ... */ }

所以:

void sumOfTwoNumbers(int targetSum, Iterable<int>  arr) {
for (int i in arr) {
//stuff
}
}

忽略最后一个元素

如果您想删除最后一个元素,只需从原始列表中创建另一个列表,该列表仅包含第一个 N - 1元素,为此您可以使用 take来自Iterable API:

Note: in this case if your array is empty the length will be zero which results in 0 - 1 -> -1 which throws a RangeError to avoid it you can use max() from dart:math API

void sumOfTwoNumbers(int targetSum, Iterable<int>  arr) {
// Iterable over all elements except by the last one
for (int i in arr.take(arr.length - 1)) {
//stuff
}
}

通过使用 max() :

import 'dart:math';

void sumOfTwoNumbers(int targetSum, Iterable<int> arr) {
// Iterable over all elements except by the last one
for (int i in arr.take(max(arr.length - 1, 0))) {
//stuff
}
}

跳过第一个元素

如果您想跳过第一个元素,则适用相同的规则,您可以使用 skip API 之一:

void sumOfTwoNumbers(int targetSum, Iterable<int>  arr) {
// Iterable over all elements except by the first one by skipping it
for (int i in arr.skip(1)) {
//stuff
}
}

引用

看看Dart codelabs/iterables它可以帮助您更好地理解集合、列表和迭代在 Dart 中的工作原理。

关于flutter - Dart,for循环中使用的int类型必须实现iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72135020/

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