Skip to content

Swift – Podstawowe operatory

Rodzaje operatorów

Możemy wyróżnić trzy rodzaje operatorów:

  • Jednoargumentowy – wpływają na jeden element (tudzież target) np. ! (negacja)
  • Dwuargumentowy – wpływają na dwa elementy np. +, –
  • Trójargumentowy – wpływają na trzy elementy. Swift posiada tylko jeden taki operator: a ? b : c

Podstawowe operatory w języku Swift

Operator przypisania

Przypisuje lub aktualizuje wartości do pewnego wyrażenia, np. a = b . Raczej nic skomplikowanego:

// Klasyczne przypisanie wartości
let x = 16
var y = 123

// Przypisanie wartości krotce
let (x, y) = (16, 123)

Operatory arytmetyczne

No to tutaj sprawa wygląda klasycznie: +, -, *, / oraz %.  Dla zasady pokażę:

var x = 10
var y = 5
var z = nil

z = x + y
z = x - y
z = -x * y
z = x / y
z = -x % y

Tak samo jak w wielu innych języków możemy korzystać z operatorów postaci +=, *= etc.

Operatory porównania

Tutaj sprawa również wygląda klasycznie, ponieważ Swift wspiera znane nam z języka C operatory porównania:

var x = 10
var y = 15
var z = nil

z = x == y
z = x != y
z = x > y
z = x < y
z = x >= y
z = x <= y

Co ciekawe, możemy porównywać również krotki:

if (1, "a") < (2, "a") {
    // do sth
}

if (2, "a") == (2, "a") {
    // do sth
}

if (2, "cc") > (2, "a") {
    // do sth
}

Trójargumentowy operator warunkowy

Tutaj sprawa również jest dziecinnie prosta. Ma on postać:

 warunek ? true : false

Przykładowo możemy wykorzystać go w następujący sposób:

var addRowHeight = elementHeight > rowHeight ? rowHeight + elementHeight : rowHeight

Nil-Coalescing Operator

Operator tego typu opakowuje opcjonalną zmienną dostarczając możliwość wyrzucenie innej domyślnej wartości, gdy ta pierwsza jest nil. Ma on następującą postać: (a ?? b) . Jeśli zmienna a będzie nil to zwróci nam b. Przykładowo:

var name: String? // domyślnie jest nil
var defaultName = "Maciek"

print("My name is \(name ?? defaultName)")

 Operatory zasięgu

Swift oferuje kilka operatorów zasięgu, dzięki którym możemy skrócić sposób zapisu wyrażeń związanych z zasięgiem pewnych wartości.

Przedział obustronnie domknięty

Ten operator odwzorowuje matematyczny przedział obustronnie domknięty. Zapisuje się go w postaci: a...b . nie może być większe od b. Przykładowo:

for i in 5...10 {
    print("Current value = \(i)")
}

 Przedział jednostronnie domknięty

Analogicznie jak powyżej, jednak z tą różnicą, że sprawa dotyczy przedziału jednostronnie otwartego (tudzież jednostronnie domkniętego):

let numbers = [1, 2, 3, 4, 5]
let count = numbers.count

for i in 0..<count {
    print("Current value = \(numbers[i])")
}

 Przedział jednostronny

Tutaj również kwestia prezentuje się analogicznie, jednak z tą różnicą, że podana jest tylko jedna granica przedziału, np. ...4 . Jeżeli nie podamy lewej granicy, to będziemy iterować od najmniejszej możliwej wartości. Jeśli podamy zaś tylko lewą granicę, to będziemy iterować tak długo jak jest to możliwe. Przykładowo:

for number in numbers[...3] {
    print("Current value = \(number)")
}

for number in numbers[1...] {
    print("Current value = \(number)")
}

 Operatory logiczne

Swift wspiera trzy znane nam z języka C operatory logiczne:

!a // negacja
a && b // koniunkcja
a || b // alternatywa

Myślę, że kwestia jest elementarna i nie ma sensu jej omawiać. Jeżeli ktoś jest całkowicie nowy w świecie programowania, to zachęcam do poszukania tego w dokumentacji.


Źródła:

Facebooktwitterredditlinkedinmail
Published inSwift