Нет, это невозможно. Чтобы инициализировать переменные знанием других переменных в классе, вы можете использовать ленивую инициализацию или getter.
var testString : String?
lazy var testString2 : String = {
guard let t = self.testString else { return String()}
return t
}()
если IAM неправильно не стесняйтесь исправлять меня :)
охранник сделал для живучести функций я думаю, и будет делать перерыв в функции, если условия не правы. Поэтому, если вам действительно нужна эта переменная, она должна соответствовать условиям. Как и если пусть но более чистый :)
Из вашего примера: var testString = String?() Недействителен. Создание экземпляра строки никогда не будет нулевым, поэтому необязательный параметр не требуется.
Edit: Я написал пример в моей детской площадке.
import UIKit
var var1 : String?
var validVar : String = {
guard let validVar = var1 else {
print("not nil")
return "NIL"
}
return validVar
}()
print("\(validVar)")
Мне не удалось найти способ сделать это, но вы можете использовать 'if let validVarTwo = var1 {validVar = validVarTwo}'. Это выглядит довольно уродливо, хотя – Jojodmo
Если не внутри функции, то какой это контекст? Определение класса? Детская площадка? –