在for循环中使用guard的正确方法是什么?
public class Panel {
public Dictionary<string, string> AllAttributes {get;set;}
[XmlElement("image", typeof(Image))]
[XmlElement("panel", typeof(Panel))]
public object[] Items { get; set; }
}
答案 0 :(得分:24)
有几种方法可以制定一些条件:
你可以为整体提出一个条件。每次迭代都会调用它
Ssn
您可以检查内部的内容并跳过迭代或停止循环:
for (index, user) in myUsersArray.enumerate() where check() {}
for (index, user) in myUsersArray.enumerate() where flag == true {}
在你的情况下,我会写这样的东西:
for (index, user) in myUsersArray.enumerate() {
guard check() else { continue }
guard flag else { break }
}
答案 1 :(得分:4)
@Arsens答案是正确的,但我认为这更容易理解
let ints = [1,2,3,4,5]
for (index,value) in ints.enumerate() {
guard value != 1 else {
print("Guarded \(value)")
continue
}
print("Processed \(value)")
}
答案 2 :(得分:2)
for (index,user) in myUsersArray.enumerate() {
guard let userId = user.id else {
print("no userId")
continue;
}
if userId == myUser.id {
//do stuff
}
}