неожиданное возвращаемое значение Non-void в функции 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 в другом месте, и он работал нормально, поэтому я не уверен, что другое об использовании в этом случае.
Спасибо за любую помощь!
2 ответов
в заголовке метода отсутствует тип возврата.
func calculateDistance(location: CLLocation) -> CLLocationDistance {
по-видимому, мой ответ выглядит как подчиненный дубликат, поэтому некоторое дополнение.
функции (включая методы, в этом случае), объявленные без возвращаемых типов, называются функцией void, потому что:
func f() {
//...
}
эквивалентно:
func f() -> Void {
//...
}
обычно вы не можете вернуть значение из таких функций void.
Но в Swift вы можете вернуть только одно значение (я не уверен, что это возможно называться "value"), "void value", представленное ()
.
func f() {
//...
return () //<- No error here.
}
теперь вы можете понять значение сообщения об ошибке:
неожиданное возвращаемое значение Non-void в функции void
вам нужно изменить возвращаемое значение, или изменить тип возвращаемого Void
к какому-то другому типу.
ваша функция calculateDistance не указывает возвращаемое значение. Это значит, что он ничего не возвращает.
однако, у вас есть строка return distance
, который is возврат значения.
Если вы хотите, чтобы ваша функция возвращала расстояние, вы должны объявить ее следующим образом:
func calculateDistance(location: CLLocation) -> CLLocationDistance
{
//your code
return distance
}