Я не могу найти каноническое доказательство того, что Swift ISN 'л ленивый оценочный язык, но я уверен, что сообщество исправит меня, если я ошибаюсь!
Поскольку это не лень, вызовы метода просто исполняются в порядке, а не определяют, какие методы никогда не нужно будет вызывать.
Для достижения такого же эффекта вам необходимо реализовать «ленивое» поведение самостоятельно.
if isFoo
{
foo()
}
else
{
bar()
}
или более просто:
isFoo ? foo() : bar()
Swift делает есть lazy instantiation. То есть вы можете сказать, что переменные не должны создаваться, пока они не будут использованы.
В Objective-C, это потребовало бы разработчику реализовать такое поведение вручную:
@property (nonatomic, strong) NSMutableArray *players;
- (NSMutableArray *)players
{
if (!_players)
{
_players = [[NSMutableArray alloc] init];
}
return _players;
}
В Swift, это намного проще и достигается с помощью lazy
ключевого слова:
lazy var players = [String]()
Я не понимаю ни слова. Это хорошо заданный вопрос. Я подозреваю, что это просто невозможно. (Я не знаю, что в некоторых случаях я бы опубликовал это как ответ). –