Swift – Základní operátory

Další kapitolou jsou základní operátory.  Až na pár vyjímek se to moc neliší od C, Objective-C.

Přiřazení

let a = 10 // konstanta
var b = 5  // promenna
b = a      // b je 10

Pokud je na pravé straně tuple, lze ho jednoduše rozložit do více proměnných.

let (a, b) = (1, 2)

Jedna změna tu ale přeci je. Narozdíl od C, Objective-C, operátor přiřazení nemá návratovou hodnotu, tzn. že níže uvedená konstrukce není platná ve Swiftu.

if x = y {
}

Tuto změnu vítám, protože dost často se stávalo, že člověk omylem napsal =  místo ==  (nebo opačně) a bylo vymalováno.

Aritmetické operátory

1 + 2  // 3
2 + 3  // 5
2 * 3  // 6
4 / 2  // 2

Další změna – by default, tyto operátory neumožňují tzv. přetečení. Pokud ho chceme, musíme použít operátor &+  místo + , apod. Ale o tom někdy příště.

Operátor +  je možné použít pro dva znaky, dva řetězce nebo řetezec a znak.

let c1: Character = "a"
let c2: Character = "b"
let ab = c1 + c2        // String "ab"

Modulo, zbytek po dělení

Modulo není modulo. Je to sice operátor % , ale funguje trochu jinak. a = b * m + r  kde m  je maximální počet b , který se vejde do a a r  je remainder, který je výsledkem operátoru % . Zároveň se u b  ignoruje znaménko, takže a % b == a % -b. A narozdíl od C, Objective-C, operátor %  funguje i u reálných čísel.

 9 %  4  //  1
 9 % -4  //  1
-9 %  4  // -1
-9 % -4  // -1
 8 % 2.5 // 0.5

++, –

Stejné jako u C, Objective-C.

var i = 1    // i == 1
let a = ++i  // i == 2, a == 2
let b = i++  // i == 3, b == 2
let c = --i  // i == 2, c == 2
let d = i--  // i == 1, d == 2

Unární +, –

Bez whitespace mezi operátorem a hodnotou.

let three = 3           //  3
let minusThree = -three // -3
let plusThree = +three  //  3

Compound assignment

var a = 2 // 2
a += 2    // 4

Nemá navratovou hodnotu, tj. nejde použít jako let b = a += 2 .

Porovnávání

Porovnává hodnotu.

3 == 3  // true
3 >  3  // false
3 >= 3  // true
3 <  3  // false
3 <= 3  // true
3 != 3  // false

Funguje i na řetězce, znaky, …

"a"  == "a"   // true
"aa" == "aa"  // true
"ab" >  "aa"  // true
"ab" >  "ab"  // false
"ab" <  "aa"  // false

Neplést s ===  a !== . O tom někdy příště.

Ternární operátory

Swift má jeden. Stejné jako u C, Objective-C.

var a = 3                   // 3
var b = ( a == 3 ? 2 : 1 )  // b == 2

Je to ekvivalent tohoto:

var a = 3
if a == 3 {
  var b = 2
} else {
  var b = 1
}

Rozsahy

Jsou dva – closed range a half closed range.

// closed
for i in 0...3 {
  // i je 0 az 3 (vcetne)
}

// half closed
for i in 0..3 {
  // i je 0 az 2 (vcetne)
}

Rozdíl je v jedné tečce, bacha na to.

Logické operátory

  • NOT !a
  • AND a && b
  • OR a || b

Vyhodnocuje se stejně jako v C, zleva doprava, takže přidávejte závorky aby bylo zřejmé co se hodnotí.