Double():为什么它有时会转换为可选类型,有时则不会?

问题描述 投票:0回答:1

以下函数定义没有出现错误:

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?

swift
1个回答
0
投票

如果您只想进行简单的计算并且没有可选值(因为价格和您的余额都可用),那么在

return
中设置计算就完全足够了。

你的函数应该如下所示:

func calculate(price: Double, prevBalance: Double) -> Double {
    return prevBalance - price
}

例如,如果您将

Double
作为
Value
(或其他类型)传递,则只能格式化
String
,但您的示例中并非如此。

双(苹果文档)

© www.soinside.com 2019 - 2024. All rights reserved.