Sobes.tech
Junior

Šta su opcije i kakvu ulogu igraju u jeziku Swift?

sobes.tech АИ

Одговор од АИ

Опционал у Swift је тип који може садржати вредност или не (бити nil).

Улоге опционала:

  • Обрада одсуства вредности (nil-сигурност).
  • Превенција грешака при приступу nil током извршавања (crash).
  • Јасно дефинисање у коду где вредност може недостајати.

Главни концепти:

  • Декларација опционала: ValueType? или Optional<ValueType>
  • Додела nil: опционалу се може доделити nil.
  • Принудно распакивање (!): извлачи вредност ако постоји, у супротном изазива фаталну грешку.
  • Опционално везивање (if let, guard let): безбедно извлачи вредност ако није nil, креирајући привремену константу или варијаблу.
  • Опционални ланац (?.): омогућава безбедно позивање метода, приступ својствима или индексима опционала.
  • Оператор спајања са nil (??): пружа подразумевану вредност ако је опционал nil.

Примери употребе:

// Декларација опционалног Int
var age: Int?

// Додела вредности
age = 30

// Принудно распакивање (несигурно ако age == nil)
// let unwrappedAge = age!

// Опционално везивање са if let
if let currentAge = age {
    print("Године: \(currentAge)") // Извршава се ако age није nil
} else {
    print("Непознате године") // Извршава се ако је age nil
}

// Опционални ланац
struct Person {
    var name: String
    var address: Address?
}

struct Address {
    var street: String
}

var person: Person? = Person(name: "Alice", address: Address(street: "Main St"))

// Покушај добијања улице преко опционалног ланца
let streetName = person?.address?.street // streetName ће бити String?

// Оператор спајања са nil
let displayedStreet = streetName ?? "Непозната улица"
print(displayedStreet) // Исписа "Main St"