Итак, я читал Документация Swift по необязательной цепочке .Если вы посмотрите на эту тему, после этого кода
let someAddress = Address()
someAddress.buildingNumber = "29"
someAddress.street = "Acacia Road"
john.residence?.address = someAddress
они вроде сделали заявление, что "нелегко увидеть, что someAddress
никогда не оценивается, потому что доступконстанта не имеет побочных эффектов ", и когда вы прокрутите больше, они поместили в функцию такой же блок кода, как показано ниже
func createAddress() -> Address {
print("Function was called.")
let someAddress = Address()
someAddress.buildingNumber = "29"
someAddress.street = "Acacia Road"
return someAddress
}
john.residence?.address = createAddress()
Мой вопросследующим образом:
Из-за Optional Binding
функция createAddress()
никогда не вызывалась во втором коде и, следовательно, someAddress
как никогда не инициализировалась.
Значит ли это, что someAddress
в CODE # 1 также не инициализирован и просто выделен некоторый объем памяти?
Мои мысли ??
someAddress
в Код # 1 просто интерпретируется компилятором, т.е. выделяется память для нового экземпляра этого класса.Память еще не инициализирована.Он будет инициализирован только после первого доступа к нему.
На самом деле утверждение "someAddress
никогда не оценивается, потому что доступ к константе не имеет побочных эффектов" привел меня сюда.
Мысли?
PS Что означает «доступ к константе не имеет побочных эффектов» означает в контексте текущего сценария?