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