В Swift въпросителният знак работи по различен начин в различни ситуации или когато се комбинира с други ключови думи. Понякога обозначава типа променлива като незадължителен или понякога се използва за незадължително верижно свързване.

Нека се опитаме да ги разберем в детайли, преди да разгледаме разликите им.

Тази публикация първоначално беше публикувана на адресhttps://agrawalsuneet.github.io/blogs/question-mark-in-swift/ и по-късно повторно публикувана на Medium.

Незадължителна променлива?

Това прави типа променлива незадължителен, ако се добави като суфикс към типа на променливата, докато дефинира която и да е променлива. Ще се нуждае от нилова проверка преди достъп до незадължителната променлива.

Можете да прочетете за различните типове променливи в блога Default vs Optional vs Explicit Non-nil Variables: Swift.
Синтаксисът ще изглежда като по-долу за незадължителната променлива.

var nullableVariable: Int?

Безопасно повикване или допълнителен верижен оператор?.

Използва се за свързване на всяка незадължителна променлива или свойство към други свойства или функционални извиквания.

Безопасните обаждания са полезни при верижното свързване. Например, ако Боб, служител, може да бъде назначен към отдел (или не), който от своя страна може да има друг служител като ръководител на отдел, тогава, за да получим името на ръководителя на отдел на Боб (ако има такъв), пишем следното

let departmentHead = bob?.department?.head?.name

Такава верига връща нула, ако някое от свойствата в нея е нула.

Стойност по подразбиране ??

Стойността по подразбиране се използва за предоставяне на стойността по подразбиране, ако изразът преди оператора за стойност по подразбиране е нула.

Например в горния пример, където търсихме името на ръководителя на отдела, ако левият израз е нула, можем да предоставим стойността по подразбиране, както е показано по-долу.

let departmentHead = bob?.department?.head?.name 
					?? "No department head found"

Тернарен оператор? :

Троичният оператор се използва за разделяне на потоците за истински и неверни условия за логическа променлива или условие. Можем да извикваме функции, да присвояваме стойности или дори да изпълняваме някакъв кодов блок както в условия true, така и в false.

Синтаксисът за същото ще изглежда по-долу.

let a = 10
        
let result = a == 10 ? "Ten" : "Some Other Value"

Разлика между ? , ?. , ?? и ? :

Моля, продължете да четете на https://agrawalsuneet.github.io/blogs/question-mark-in-swift/

Това е всичко за сега. Можете да прочетете другите ми интересни блогове тук или можете да се насладите на моите игри или приложения, изброени тук. Чувствайте се свободни да използвате моите Android компоненти с отворен код във вашето приложение, посочено тук. Или пуснете „имейл“, ако не сте намерили това, което търсите и имате нужда от помощ.