почему вызов функции внутри класса также печатает тип возвращаемого значения? - PullRequest
0 голосов
/ 19 апреля 2020

Существует класс Dog, и я определяю функцию bark () внутри него, поэтому, когда я пытаюсь вызвать эту функцию таким образом, я получаю "arf" , но также () . Это почему? Извините, я только начал Swift и этого я не понял.

class Dog {
    var whatThisDogSays = "woof"
    func bark(){
        print(self.whatThisDogSays)
    }
}
let d = Dog()
d.whatThisDogSays = "arf"
let barkFunction = d.bark
print(barkFunction())

//prints  
//arf
//()

1 Ответ

3 голосов
/ 19 апреля 2020

Если функция Swift не указывает явно тип возврата, такой как ваша Dog.bark() функция, то она неявно возвращает Void, как если бы она была func bark() -> Void { ... }

Void. имя типа единицы Swift , то есть тип только с одним возможным значением. Это еще одно имя для (), пустой кортеж, единственным значением которого также является (), которое является просто пустым кортежем.

Оператор print(self.whatThisDogSays) печатает значение whatThisDogSays ("woof" типа String).

Затем print печатает возвращаемое значение barkFunction(), то есть (), пустой кортеж типа () aka Void.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...