繁体   English   中英

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

[英]unexpected non-void return value in void function in new Swift class

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

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 代码,它工作正常,所以我不确定这种情况下的用法有什么不同。

谢谢你的帮助!

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

func calculateDistance(location: CLLocation) -> CLLocationDistance {

似乎我的答案看起来是次等的重复,所以要补充一些。

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

func f() {
    //...
}

相当于:

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

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

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

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

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

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

您的函数 calculateDistance 未指定返回值。 这意味着它不会返回任何东西。

但是,你有一行return distance返回值。

如果你想让你的函数返回一个距离,你应该像这样声明它:

func calculateDistance(location: CLLocation) -> CLLocationDistance
{
  //your code
  return distance
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM