双扩展 Swift

Double Extension Swift

我正在尝试在 playground 中创建 Double 类型的 iOS Swift 扩展,该扩展实现了名为 add 的方法 接收一个 String 和 returns 一个可选的 Double (Double?).

扩展 Double 类型,使用扩展,并添加一个名为 add 的方法,该方法采用 String 作为没有标签的参数并且 returns a Double?.

如果String参数可以变成Double,return StringDouble 值加上调用 add 的 Double 的值。如果 String 不能变成 Double,return nil.

为了测试这段代码,我需要使用:

let value1: Double? = 3.5.add("1.2") //value should be 4.7

let value3: Double? = 1.5.add("words") //value should be nil
extension Double {
    func add(_ value: String) -> Double? {
        guard let someNum = Double?(self) else {
            return nil
        }
        return (someNum + value)
    }
}

https://i.stack.imgur.com/VLM2E.png

看起来您对要在 guard 语句中展开什么以及需要将什么从 String 转换为 Double 感到有点困惑。在您当前的代码中,您尝试将 self,即 already a Double 转换为 Double? - 然后,您尝试添加它Double?String.

这是一个固定版本:

extension Double {
    func add(_ value: String) -> Double? {
        guard let numValue = Double(value) else {
            return nil
        }
        return self + numValue
    }
}