Я новичок в swift и пытаюсь найти определение для этого типа экземпляра, но не повезло. Я видел что-то подобное в примере проекта. Как это называется?Какая переменная Декларация такова в Swift
Пример:
var str = "Hello World"
var test: Int {
var testVal = 5
if !str.isEmpty {
testVal = 10
}
return testVal
}
В XCode игровой площадке, это покажет значение для str
, но не для test
. Пока вы не наберете test
на новой строке или не используйте ее в другом месте. Я думал, что это пример autoclosure
, но он имеет более преднамеренный синтаксис и сразу же запускается.
Пример autoclosure с ярлыком синтаксисом:
var str = "Hello World"
var test: Int = {
var testVal = 5
if !str.isEmpty {
testVal = 10
}
return testVal
}()
Этот последний пример будет определять test
сразу же, и вы увидите выход на детской площадке, например. Преимущество первого заключается в том, что для более сложных ситуаций оно будет задерживаться, определяя значение
Существует еще третья форма, которая добавляет 'lazy' перед« var test »во втором примере. Разница в том, что инициализация не будет сформирована до тех пор, пока переменная не будет доступна в первый раз - как вычисленное свойство, а код запускается один раз. – vadian
Да, есть некоторые тонкие нюансы в этих типах, которые не имеют эквивалентов на моих других языках (как минимум, на уровне языка). Как упоминалось в @atreat, вы можете добавить «ленивый» к последнему, а не к первому. – drewpotential