()
- сокращение от void
. Это означает, что «здесь значение невозможно».
В этом примере это означает, что метод .round()
ничего не возвращает - это мутирующая функция, вызываемая для его получателя. Таким образом, присвоение его пустого возврата var
приводит к выводу, что тип переменной var равен void
. Пустые переменные могут быть полезны, иногда, редко *, но не в этом случае.
Методы для типов значений часто встречаются парами: глагол, подобный round
, и пассивный глагол, например, rounded
. Первый действует непосредственно и изменяет свою цель; вторая возвращает измененную версию своей цели. Для другого примера см. sort()
и sorted()
для коллекций или append(_)
и appending(_)
для строк и т. Д. c. (* примечание: filter
- раздражающее исключение; оно означает «отфильтрованный», а удобный «фильтр на месте» отсутствует).
Чтобы получить эффект, который вы добились в первом примере, rounded()
- это то, что вы хотите.
-
(* Чтобы ответить на тангенциальный вопрос в вашем заголовке: как на самом деле использовать переменную void? Ну, вот как я иногда их использую :
В объекте с некоторой настройкой, который я хотел бы получить через некоторое время после init
, но гарантированно не чаще одного раза в каждом экземпляре, я использовал Objective- C 's dispatch_once
. Это не так доступна в Swift, так что теперь я сделаю ленивый элемент void следующим образом:
class Foo {
lazy var setup: () = {
// do some complicated stuff I couldn't do in `init` for some reason
// this will only run once
}()
func doSomethingUseful() {
_ = setup // runs the setup initializer just the first time we get here
// do useful things that depend on setup having happened
}
}
Я оставлю это на усмотрение комментариев, чтобы судить, действительно ли мы «собирались» использовать такую технику.: )