Dart,for循环中使用的int类型必须实现iterable
Dart, the type int used in the for loop must implement iterable
我想在此函数中使用 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
from [=18] =] 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 中的工作方式。
我想在此函数中使用 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
from [=18] =] 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 usemax()
fromdart: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 中的工作方式。