小编典典

新Swift类中void函数中的意外非空返回值

swift

我刚刚开始学习面向对象,并且已经开始编写一个用户类,该类具有一种计算用户到对象的距离的方法。看起来像这样:

class User{
    var searchRadius = Int()
    var favorites : [String] = []
    var photo = String()
    var currentLocation = CLLocation()

    func calculateDistance(location: CLLocation){
        let distance = self.currentLocation.distanceFromLocation(location)*0.000621371
        return distance //Error returns on this line
    }
}

在上面标记的行上,出现以下错误:

(!) Unexpected non-void return value in void function

我在其他地方寻找解决方案,但似乎找不到适用于此实例的任何东西。我在其他地方使用过distanceFromLocation代码,效果还不错,所以我不确定在这种情况下用法有什么不同。

谢谢你的帮助!


阅读 366

收藏
2020-07-07

共1个答案

小编典典

您在方法标头中缺少返回类型。

func calculateDistance(location: CLLocation) -> CLLocationDistance {

看来我的回答看起来像是次等的,所以有些补充。

没有返回类型声明的函数(在这种情况下,包括方法)被称为void函数,因为:

func f() {
    //...
}

等效于:

func f() -> Void {
    //...
}

通常,您不能从此类void函数返回任何值。但是,在Swift中,您只能返回一个值(我不确定它可以称为“值”),还是由表示的“无效值” ()

func f() {
    //...
    return () //<- No error here.
}

现在,您可以了解错误消息的含义了:

void函数中意外的非无效返回值

您需要更改返回值,或者将返回类型更改为Void其他类型。

2020-07-07