var z1 = false
var z2 = false
var z3 = false
if let y1: Int = nil {
z1 = true
}
if let y2: Int? = nil {
z2 = true
}
var x: Int? = nil
if let y3: Int? = x {
z3 = true
}
println(z1) // false
println(z2) // ture
println(z3) // false
Я пытаюсь использовать необязательное значение, подобное этому (я знаю, что это утомительно, мне просто любопытно узнать о необязательном значении в глубине).
Результат не такой, как я ожидаю. z1 ложно, этого я и ожидал, но почему z2 верно? y2 равен нулю после присваивания, но оператор if считает, что это выражение (let y2: Int? = nil
) истинно, и выполняется следующий оператор (z2=true
), почему это произошло?
Почему z2 не может быть ложным?
Если y2 просто объявлено как необязательное значение, которое может содержать другое необязательное значение, а необязательное значение может быть нулевым, оператор if let
просто определяет, что развертывание выполнено успешно, то почему z3 не соответствует действительности?