我試圖在 for 回圈期間更改陣列中運行 for 回圈的專案數,目的是改變回圈數。在一個非常簡化的版本中,代碼看起來像這樣:
var loopArray: [Int] = []
loopArray.append(1)
loopArray.append(2)
loopArray.append(3)
loopArray.append(4)
loopArray.append(5)
for x in 0..<Int(loopArray.count) {
print(x)
if x == 4 {
loopArray.append(6)
}
}
運行這段代碼時,列印了 5 個數字,而數字 6 被添加到陣列中時,loopArray.count似乎沒有更新。我怎樣才能使.count動態?這是一個非常簡化的示例,在我正在處理的專案中,將數字附加到陣列取決于可能滿足或不滿足的條件。
我在網上找過例子,但沒能找到類似的案例。非常感謝任何幫助或指導。
uj5u.com熱心網友回復:
Joakim 給出了正確的方法來做你想做的事,但我認為需要解釋一下為什么你的解決方案不起作用
線
for x in 0..<Int(loopArray.count)
只評估loopArray.count一次,第一次被擊中。這是因為作業方式for。從概念上講,for回圈遍歷序列的元素。語法是這樣的
for x in s
在哪里
- s 是一個序列,給它型別
S - x 是一個型別為 let 的常量(你也可以將其設為 a
var但與當前討論無關)S.Element
所以 之后的位in是一個序列——任何序列。這里使用 并沒有什么特別之處..<,它只是一種構造連續整數序列的便捷方法。事實上,它構造了一個Range(順便說一句,你不需要強制轉換為Int,Array.count它已經是一個Int)。
該范圍僅在您第一次進入回圈時構建,并且它實際上是一個常量,因為Range它是一種值型別。
如果你不想使用 Joakim 的答案,你可以創建自己的參考型別(類),它符合Sequence并且其元素是Int并且每次通過回圈更新上限,但這似乎需要做很多作業來避免while 回圈。
uj5u.com熱心網友回復:
您可以使用while回圈而不是for回圈。
var i = 0
while i < loopArray.count {
print(i)
if i == 4 {
loopArray.append(6)
}
i = 1
}
哪個列印
0 1 2 3 4 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536590.html
標籤:数组迅速for循环动态的
上一篇:如何在for回圈中賦值?
