首页 > 解决方案 > 比较 Swift 中的两个 Double:“没有更多上下文,表达式的类型是模棱两可的”

问题描述

我有一个函数必须检查一个值(realOperand)是否大于其他值(realValue)。这些值是数字,但它们以字符串形式出现,我将它们解析为 Double:

return Double(realOperand) > Double(realValue)

我不明白为什么,但那条线给出了这个错误:

在没有更多上下文的情况下,表达式的类型是模棱两可的

标签: iosswiftdouble

解决方案


功能

Double.init(_ string: String)返回一个可选的(类型Double?)。

就像您编写了以下代码:

var a: Double? = nil
var b: Double? = 7

if a > b {
    print("A is greater")
}

nil 是大于还是小于 7?它是未定义的。Optionals 不是Comparable

如果其中一个或两个字符串都无法转换为 Double,您需要决定该怎么做:

guard let operand = Double(realOperand),
  value = Double(realValue) else {
    // Crash on purpose. Not a great option for user-entered Strings!
    fatalError("Could not convert strings to Doubles")
}

return operand > value

推荐阅读