我想for…in loop
在這個函式中使用 Dart,但即使我將 arr 宣告為Iterable<int>
功能:
void sumOfTwoNumbers(int targetSum, Iterable<int> arr) {
for (int i in arr.length-1) {
//stuff
}
}
雖然它正在使用正常的 for 回圈,但我不知道如何解決這個問題,如果有任何幫助,將不勝感激
uj5u.com熱心網友回復:
因為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 中使用:
注意:在這種情況下,如果您的陣列為空,則長度將為零,這會導致 0 - 1 -> -1 拋出 a
RangeError
來避免它,您可以max()
從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,它可以幫助你更好地理解集合、串列和 iterables 在 Dart 中是如何作業的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470691.html
上一篇:如何列印所有輸入的總和?
下一篇:如何使用矩陣乘法簡化for回圈?