if
для определения того, что опционал содержит значение, сравнив его с nil
. Вы можете выполнить это сравнение с помощью оператора равенства (==) или неравенства (!=).
nil
:
let convertedNumber = Int("132")
if convertedNumber != nil {
print("convertedNumber содержит некое целое число.")
}
let convertedNumber = Int("132")
if convertedNumber != nil {
print("convertedNumber содержит целочисленное значение \(convertedNumber!).")
}
if
для проверки значения внутри опционала и для извлечения значения в константу или переменную в качестве части единого действия.
let possibleNumber = "132"
if let actualNumber = Int(possibleNumber) {
print("\"\(possibleNumber)\" имеет целочисленное значение \(actualNumber)")
} else {
print("\"\(possibleNumber)\" не может быть приведено к целому числу")
}
Этот код может быть прочитан как:
Int
, который был возвращён (Int(possibleNumber))
, содержит значение, то нужно задать новую константу с именем actualNumber
для значения, содержащегося в опционале."
actualNumber
становится доступной для использования внутри первой ветки if
. Она сразу инициализируется значением, содержащимся в опционале: нет необходимости больше использовать суффикс ! для доступа к значению. В этом примере actualNumber
просто используется для распечатывания результата преобразования.
actualNumber
внутри первой ветки инструкции if
, вы можете написать вместо данного кода код if var actualNumber
, а значение, хранимое в опционале, станет доступно в качестве переменной нежели константы.
if
, сколько Вам нужно, разделив их запятыми. Если хотя бы одно из значений опционального биндинга будет nil
или любое Булево условие будет выведено в false
, то вся инструкция if
будет эквивалентна false
. Следующие инструкции if
эквивалентны:
if let firstNumber = Int("4"), let secondNumer = Int("42"), firstNumber < secondNumber && secondNumber < 100 {
print("\(firstNumber) < \(secondNumber) < 100")
}
if let firstNumber = Int("4") {
if let secondNumber = Int("42") {
if firstNumber < secondNumber && secondNumber < 100 {
print("\(firstNumber) < \(secondNumber) < 100")
}
}
}
binding
с английского. Другой вариант - связывание, однако биндинг так же нередко употребляется в технической русскоязычной литературе.
if
являются такими блоками кода. Поэтому константы и переменные, созданные в опциональном биндинге в if
, доступны только внутри тела этой инструкции:
let possibleNumber = "132"
if let actualNumber = Int(possibleNumber) {
print("\"\(possibleNumber)\" имеет целочисленное значение \(actualNumber)")
} else {
print("\"\(possibleNumber)\" не может быть приведено к целому числу")
}
print(actualNumber) // ошибка - actualNumber не зада в данном контексте