当前位置: 首页 > 面试题库 >

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

欧阳子石
2023-03-14
问题内容

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

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其他类型。



 类似资料:
  • 问题内容: 我有一个返回类对象或nil的函数。该功能的目的是检查是否存在。聊天ID存储在MySQL中。如果ID存在,则执行Firebase引用以获取快照,然后获取对象。如果ID不存在,则返回nil: 但是,在我得到 void函数中非预期的非无效返回值。 关于我可能会想念的任何想法? 问题答案: 问题是您试图从一个封闭内部返回一个非空值,该值仅从封闭内部返回,但是由于该封闭期望一个空返回值,因此您会

  • 问题内容: 我创建了一个从API获取URL并返回URL字符串作为结果的函数。但是,Xcode给我此错误消息: void函数中非预期的非无效返回值 有谁知道为什么会这样吗? 问题答案: 使用闭包而不是返回值:

  • 我正在学习指针是如何工作的,但我不明白这段代码中的一件事。在void*函数中返回int就像一个咒语,但是返回float就不是了。

  • 问题内容: 我一直在浏览StackOverflow问题,以弄清楚我的代码出了什么问题,但我似乎无法做到!我试图将我的Swift 1.2项目转换为Swift 2.0,并且我的类在下载JSON数据时遇到问题。 我不断 在void函数中 收到错误 Unexpected non-void返回值 。 这是我正在使用的代码,有些被截断了; 也许我忽略了一些简单的事情,但是我不确定为什么我的函数将被认为完全无效

  • 我在玩C语言中的函数指针只是为了学习。我尝试调用一个空函数,并将其结果设置为int。 我从中得到的结果是: 在对它进行了一点研究之后,我意识到main正在函数()中打印printf语句中的字符数。为什么会这样?这是预期产出吗?

  • 问题内容: 我正在尝试使用BeautifulSoup从html文档中获取一些文本。在我看来,这很奇怪,它产生了一个奇怪而有趣的结果:在某一点之后,汤在文本中充满了多余的空格(空格将每个字母与下一个字母分隔开)。我试图在网络上搜索以找到原因,但是我只遇到了有关相反错误的一些消息(根本没有空格)。 您对它为什么会发生以及如何解决此问题有任何建议或提示吗? 这是我创建的非常基本的代码: 这是从结果中提取