gpt4 book ai didi

swift - Guard Swift 编译问题中变量绑定(bind)后的条件

转载 作者:行者123 更新时间:2023-11-30 13:02:04 25 4
gpt4 key购买 nike

我正在使用 Swift 3.0(在 Xcode 8.0 中)的漂亮保护语句,并具有以下功能:

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 替换为 , 然后第二个错误消失,但第一个错误仍然存​​在。
  • where 替换为 , where 但此行甚至无法解析
  • 将 where 中的 count 替换为 Int(s) 但出现相同的错误。

我应该如何更改我的代码才能编译? (我的意思是,使用一个很好的单个守卫语句,我当然可以有多个守卫,或者 ifs 或 switch,但从我读到的有关守卫语句的内容来看,我应该能够拥有一个干净可读的行)。

最佳答案

为了解决这个问题,我建议您在保护语句中使用模型 Swift 语法,将 where 替换为 ,

func  parse(suffix s: String) {
guard let count = Int(s), count >= 0 else {
return
}
}

也可以使用 if let 语句:

func  parseTwo(suffix s: String) {
if let count = Int(s), count >= 0 {
// done
print(count)
} else {
return
}
}

关于swift - Guard Swift 编译问题中变量绑定(bind)后的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com