Тернарный условный оператор и оператор ??

Тернарный условный оператор

Проверку на выполнение условий можно записать со помощью условного оператора if else

//
// proSwift.ru
//
// Swift 3

if batteryLow {
    replaceBattery()
} else {
    plugAndPlay()
}

Тут все просто — если батарейки сели — нужно их заменить, а если они в порядке — то можно и  использовать. Эту конструкцию можно записать в одну строку.

//
// proSwift.ru
//
// Swift 3

batterylow ? replaceBattery() : plugAndPlay()

Эти два выражения абсолютно равнозначны.

Оператор ??

//
// proSwift.ru
//
// Swift 3

let result = optional ?? defaultValue

Оператор ?? применяется к опциональному значению optional, и если оно извлекается то в result вернется извлеченное значение. А если значение не извлекается, т.е. оно равно nil, то вернется значение defaultValue. Это сокращение следующей конструкции

//
// proSwift.ru
//
// Swift 3

if optional != nil {
    return optional!
} else {
    return defaultValue
}

// Или в сокращенном варианте 

optional != nil ? optional! : defaultValue


 



Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.