首页 > 解决方案 > 预期返回“双”的函数中缺少返回 | 该怎么办?

问题描述

以下代码:

protocol ExampleProtocol {
    var simpleDescription: String { get }
    var absoluteValue: Double { get }
    mutating func adjust()
}

extension Double: ExampleProtocol {
    var simpleDescription: String {
        return "The number \(self)"
    }
    var absoluteValue: Double {
        if self < 0 {
            return self * -1
        } else if self > 0 {
            return self
        }
    }
    mutating func adjust() {
        self += 42
    }
}

当尝试使用 simpleDescription 或 absoluteValue(例如 print(10.simpleDescription))执行它时,我得到了这个错误:

预期返回“双”的函数中缺少返回

absoluteValue“函数”返回自身,所以 Double 值,为什么它说它缺少一个?

标签: swiftreturn

解决方案


问题是您的if语句缺少一个else块,没有为 when 的情况定义返回值self == 0。您可以简单地将else if分支更改为else,因为您还想返回selffor 0

var absoluteValue: Double {
    if self < 0 {
        return self * -1
    } else {
        return self
    }
}

您还可以使用三元运算符将其编写为单行:

var absoluteValue: Double {
    return self < 0 ? self * -1 : self
}

推荐阅读