Параметры функции Swift 2.0 «inout» и вычисляемые свойства
Я сейчас тестирую бета-версию Swift 2.0 и обнаружил странное поведение. Вот пример кода:
private func someFunc(inout someString: String) {
print("Inside \'someFunc()\'")
print(someString)
someString = "Some another string"
}
private var someAncillaryInt = 42
print(someAncillaryInt)
private var someString: String {
get {
print("Inside \'getter\'")
return "Some string"
}
set {
print("Inside \'setter\'")
someAncillaryInt = 24
}
}
someFunc(&someString)
print(someAncillaryInt)
Выход:
42
Внутри "добытчик"
Внутри someFunc ()
Некоторая строка
Внутри «сеттер»
24
Я не понимаю, почему не былодобытчик вызывается во время печатиsomeString
внутриsomeFunc()
и почему это было когдаsomeFunc()
прошло сsomeString
.
Можно предположить, что я не понимаю тонкостейINOUT параметры еще и после того, как передаются какINOUT Свойство параметра computed перестает быть, например, «computed», но почему тогда вызывается «setter», когда мы устанавливаем другое значение вsomeString
?
Спасибо!
UPD: Я добавил ответ ниже.
ОБНОВЛЕНИЕ 18/11/2015: Apple обновила своируководство с подробным объяснением того, как работает inout params.