gpt4 book ai didi

swift - 使用 Swift 3 的 do { 行的预期声明错误

转载 作者:行者123 更新时间:2023-11-28 16:09:27 24 4
gpt4 key购买 nike

我在 do { 行收到预期的声明错误。我曾尝试对此进行研究,并阅读了有关 try/catch 语句的 Swift 3 的 Apple 开发人员信息,但未能弄清楚这一点。

代码如下:

class Calculator: ViewController {

var display = "0"
var numerator : Float?
var denominator : Float?
var total : Float?


enum divisionErrors: Error {
case inf
case nan
}

func divide(num: Float, by denum: Float) throws -> Float {
guard num != 0 else{throw divisionErrors.nan}
guard denum != 0 else{throw divisionErrors.inf}

let computedValue = num / denum
return computedValue
}

do {

catch divisionErrors.inf {print("Error")}
display = "0"

catch divisionErrors.nan {print("Error")}
display = "0"
}
}

最佳答案

您的主要问题是您试图在类的主体中使用 do 语句,而它应该只在函数的主体中。为了论证,我将把它放在 viewDidLoad 方法中。

class Calculator: UIViewController {

var display = "0"
var numerator : Float?
var denominator : Float?
var total : Float?


enum divisionErrors: Error {
case inf
case nan
}

func divide(num: Float, by denum: Float) throws -> Float {
guard num != 0 else{throw divisionErrors.nan}
guard denum != 0 else{throw divisionErrors.inf}

let computedValue = num / denum
return computedValue
}

override func viewDidLoad() {

do {
try total = divide(num: numerator!, by: denominator!)

} catch divisionErrors.inf {
print("Error")
display = "0"
} catch divisionErrors.nan {
print("Error")
display = "0"
} catch {
assert(false, "Other Error")
}
}
}

换句话说,当您某事时,您还必须尝试做一些可能会失败的事情。之后,您使用一些关于错误的 catch 语句关闭 do。与 switch 语句一样,您的 catch 案例必须详尽无遗。如果没有最后的 catch 将其余可能的错误四舍五入,您将在尝试编译时出错,因为潜在的错误超出了您的 divisionErrors 枚举的范围。

您可能还想对分子和分母进行错误检查以确保它们存在。为了练习,我只是强行打开它们。

关于swift - 使用 Swift 3 的 do { 行的预期声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779811/

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