Swift中具有两个条件的Guard语句

时间:2019-01-13 20:11:21

标签: swift mkannotation guard

我的理解是,在保护语句中有两个条件,并用逗号分隔,这两个条件都必须成立。我可以单独编写一个保护声明,然后编译代码,但是当我将它们与逗号组合时,会出现错误。我的语法有什么问题吗?或者谁能解释为什么它无法编译?

df.groupby('Week')['Alarm1','Alarm2'].apply(lambda x: x.sum()/x.count()).reset_index()

    Week    Alarm1  Alarm2
0   1   0.333333    0.333333
1   2   0.250000    0.750000
2   3   1.000000    1.000000

3 个答案:

答案 0 :(得分:2)

您使用了太多无意义的括号,基本上没有在简单表达式的ifguard语句中使用括号。

发生错误是因为编译器将包围括号视为元组((Bool, Bool)),这就是错误消息的意思。

guard mode != "mapme" else {

guard !(annotation is MKUserLocation) else { // here the parentheses are useful but the `!` must be outside of the expression

guard mode != "mapme", !(annotation is MKUserLocation) else {

答案 1 :(得分:1)

如果要使用括号,只需使用&&运算符(或||如果需要OR子句)

guard (mode != "mapme" && !(annotation is MKUserLocation)) else {

答案 2 :(得分:0)

很快,您不需要在if语句,for循环等所有内容的外括号。通常不将它们包括在内是一种很好的做法,在您的情况下,当您包括方括号时,guard声明将成为元组。因此,只需将您的代码更改为此,它就可以正常工作。

guard mode != "mapme" else {  //compiles
}

guard !(annotation is MKUserLocation) else { //compiles
}

guard mode != "mapme", !(annotation is MKUserLocation) else { 

}