预期返回“ Double”的函数中缺少返回该怎么办?

时间:2019-03-19 19:31:25

标签: swift return

以下代码:

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))执行它时,我只会收到此错误:

  

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

absoluteValue“函数”会返回自身,因此会返回Double值,那么为什么会说它缺少一个?

1 个答案:

答案 0 :(得分:1)

问题是您的if语句缺少else块,对于self == 0的情况未定义返回值。您只需将else if分支更改为else,因为您还想为self返回0

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

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

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