我正在使用来自 Swift 3.0(在 Xcode 8.0 中)的 nice guard 语句,并具有以下功能:
func parse(suffix s: String) throws -> Instruction {
guard let count = Int(s) where count >= 0 else {
throw InstructionParsingError(message: s + " should be a positive integer")
}
return CallInstruction(argCount: count)
}
我的问题是 swift 编译器两次抱怨包含我的保护语句的行:
CallInstruction.swift:42:29: Boolean condition requires 'where' to separate it from variable binding
CallInstruction.swift:42:30: Expected ',' joining parts of a multi-clause condition
我试过了
where
用a替换,
然后第二个错误消失,但第一个错误仍然存在。- 替换为
where
但, where
随后这条线甚至无法解析 - 替换
count
where 中的,Int(s)
但有相同的错误。
我应该如何更改我的代码才能编译?(我的意思是,我的意思是,我可以有一个很好的单一保护语句,当然我可以有多个保护,或者 ifs 或 switch,但是从我读到的关于保护语句的内容中,我应该能够有一个清晰可读的行)。