首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新Swift类的void函数中存在意外的非void返回值

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

Stack Overflow用户
提问于 2016-07-20 06:40:16
回答 2查看 80.8K关注 0票数 24

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

代码语言:javascript
复制
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
    }
}

在上面标记的行上,我得到以下错误:

代码语言:javascript
复制
(!) Unexpected non-void return value in void function

我已经在其他地方寻找了解决方案,但似乎找不到任何适用于此实例的东西。我在其他地方使用过distanceFromLocation代码,它工作得很好,所以我不确定这种情况下的用法有什么不同。

谢谢你的帮助!

EN

Stack Overflow用户

回答已采纳

发布于 2016-07-20 06:45:44

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

代码语言:javascript
复制
func calculateDistance(location: CLLocation) -> CLLocationDistance {

似乎我的答案看起来是一个次要的副本,所以增加了一些。

没有返回类型而声明的函数(在本例中包括方法)被称为void函数,因为:

代码语言:javascript
复制
func f() {
    //...
}

等同于:

代码语言:javascript
复制
func f() -> Void {
    //...
}

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

代码语言:javascript
复制
func f() {
    //...
    return () //<- No error here.
}

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

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

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

票数 41
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38469648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档