Yas*_*HAY 2 for-loop iterable dart flutter
我想for\xe2\x80\xa6in loop在这个函数中使用 Dart,但即使我将 arr 声明为Iterable<int>
功能:
\nvoid sumOfTwoNumbers(int targetSum, Iterable<int> arr) {\n for (int i in arr.length-1) {\n//stuff\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n它正在使用正常的 for 循环,但我不知道如何解决这个问题,如有任何帮助,将不胜感激
\n因为arr.length你正在尝试迭代int
arrIterable是语句中预期的类型:
for (var T element in Iterable<T>) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
所以:
for (var T element in Iterable<T>) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
如果您想删除最后一个元素,只需从原始列表中创建另一个仅包含第一个元素的列表,您可以从API中N - 1使用:takeIterable
注意:在这种情况下,如果您的数组为空,则长度将为零,这会导致 0 - 1 -> -1 抛出 a
RangeError以避免它,您可以max()从dart:mathAPI中使用
void sumOfTwoNumbers(int targetSum, Iterable<int> arr) {
for (int i in arr) {
//stuff
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用max():
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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想跳过第一个元素,则适用相同的规则,您可以使用skipAPI:
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
}
}
Run Code Online (Sandbox Code Playgroud)
查看Dart codelabs/iterables,它可以帮助您更好地了解集合、列表和迭代器在 Dart 中的工作原理。