是否有一个函数,我可以用来迭代一个数组并同时具有索引和元素,如python的枚举?
for index, element in enumerate(list):
...
Run Code Online (Sandbox Code Playgroud) 我有一个循环,遍历数组中的每个元素。在一定条件下,我在循环内向该数组添加了另一个元素。但是,循环未考虑该新元素。如果数组中最初有6个项目,并且在循环遍历时,我又增加了2个,它仍然仅循环执行6次。我怎样才能解决这个问题?
for ingredient in ingredientList {
if ingredient.name == "banana" {
var orange = Ingredient(name: "orange")
ingredientList.append(orange)
}
if ingredient.name == "orange" {
// this never executes
}
}
Run Code Online (Sandbox Code Playgroud)
如果我的成分之一是香蕉,请在列表中添加橙色。但是,循环甚至不会考虑新添加的元素。我怎样才能完成这样的事情?为什么不起作用?
...或者如何在for循环条件中使用索引
大家好,因为我们在Swift 3中没有使用c风格的循环,所以我似乎找不到找到一种方式来表达更复杂的循环,因此也许您可以帮帮我。
如果我要写这个
for(int i=5; num/i > 0; i*=5)
Run Code Online (Sandbox Code Playgroud)
快速3我该怎么做?
我关闭的时间是:
for i in stride(from: 5, through: num, by: 5) where num/i > 0
Run Code Online (Sandbox Code Playgroud)
但这当然会一次迭代5个块,如果我是:5、25、125等。
有任何想法吗?
谢谢
例如,Java for循环:
for(int i=0; i<5; i+=1){
//
}
Run Code Online (Sandbox Code Playgroud)
转换为Swift
for index in 0..<5 {
}
Run Code Online (Sandbox Code Playgroud)
但如果i+=2呢?
我是Swift的新手..也许这是一个愚蠢的问题,但如果你回答它会很感激,谢谢!:-)
考虑以下代码:
let value = "ABCDE"
for letter in value {
print(letter)
}
Run Code Online (Sandbox Code Playgroud)
这打印:
A
B
C
D
E
Run Code Online (Sandbox Code Playgroud)
现在考虑假设的代码,当它找到“2”时,它会在循环中向前跳过 2。这是显示我要问的内容的伪代码......
let value = "AB2DE"
for letter in value {
if letter == "2" {
continue 2 <-- Does Swift support something similar to this?
}
print(letter)
}
Run Code Online (Sandbox Code Playgroud)
上面的输出看起来像这样:
A
B
E
Run Code Online (Sandbox Code Playgroud)
注意:当然,我可以通过管理跳过计数器轻松实现此目的,然后使用continue,在进行时递减计数器,或者,如果源支持下标,正如其他人建议的那样,我可以使用循环while来管理自己的索引。有多种方法可以解决这个假设的问题,但这不是我问题的目的。
我的问题是专门查明该语言是否原生支持一次跳过 for 循环的多次迭代(例如类似continueManyor的东西continue x)。