错误使得后卫声明斯威夫特

错误使得后卫声明斯威夫特

问题描述:

请考虑以下几点:错误使得后卫声明斯威夫特

let isHaveSn = model.positions.contains {$0.assortment?.isSerialTrackable == true} 
guard isHaveSn else { 
return 
} 

isHaveSn产品布尔,所以我检查布尔在后卫和一切工作。但我想简化此类似:

guard model.positions.contains {$0.assortment?.isSerialTrackable == true} else { 

       return 
      } 

它产生几个错误,其中一些:预计表达或连续语句应该分开;

但我刚才复制的右侧:

let isHaveSn = model.positions.contains {$0.assortment?.isSerialTrackable == true} 

为什么我的代码无法编译?

+1

这是尾随的封闭,让你绊倒。更改为将括号括起来(它实际上是一个函数参数)。 ...'positions.contains(其中:{$ 0' ... – Grimxn

为正确的语法是:

guard model.positions.contains(where: {$0.assortment?.isSerialTrackable == true}) else { 
    return 
} 


其实有在迅速进化的建议,以使在后卫声明后封口之所以遭到拒绝。你可以阅读more about it here

+0

感谢,但我认为它有点类似于我的错误理解(因为我复制了代码,提供了Bool并将其粘贴到警卫中并且它不起作用)。 –