以下函数定义没有出现错误:
func calculate(price: String, prevBalance: Double) -> Double
{
guard let itemPrice = Double(price) else {
print("Error for the purchase amount")
return prevBalance
}
return prevBalance - itemPrice
}
但是,如果我将第一个参数的类型更改为 Double:
func calculate(price: Double, prevBalance: Double) -> Double
{
guard let itemPrice = Double(price) else {
print("Error for the purchase amount")
return prevBalance
}
return prevBalance - itemPrice
}
我收到错误:
条件绑定的初始化程序必须具有可选类型,而不是“Double”
这是为什么呢? 如果
price
是 String 类型,那么可以通过 Double(price)
转换为非可选类型,但如果 price
是 Double ,则只能转换为可选类型? 或者,Double(price)
对于 String 类型不会返回 nil,但对于 Double 类型可以返回 nil?
嗨,
如果您只想进行简单的计算并且没有可选值(因为价格和您的余额都可用),那么在
return
中设置计算就完全足够了。
你的函数应该如下所示:
func calculate(price: Double, prevBalance: Double) -> Double {
return prevBalance - price
}
例如,如果您将
Double
作为 Value
(或其他类型)传递,则只能格式化 String
,但您的示例中并非如此。