Monthly Archives: July 2014

Swift – Nested Types

Pokračujeme v krasojízdě a dneska se mrkneme na Nested Types neboli vnořené typy.

Co je vnořený typ? Uvnitř třídy, struktury nebo výčtu můžeme definovat další třídu, strukturu nebo výčet. Počet úrovní není omezen. Zjednodušený příklad z dokumentace.

struct Card {

  // Vnoreny typ
  enum Suit: Character {
    case Spades = "♠", Hearts = "♡", Diamonds = "♢", Clubs = "♣"
  }

  // Vnoreny typ
  enum Rank {
    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
    case Jack, Queen, King, Ace
  }

  // Properties struktury
  let suit: Suit
  let rank: Rank

}

Na vnořené typy se odkazujeme pomocí tečkové notace a můžeme je použít samostatně. Například:

let suit = Card.Suit.Spades
let anotherSuit: Card.Suit = .Spades

Celou strukturu Card  můžeme použít a inicializovat takto:

let card = Card( suit: .Spades, rank: .Ace )

To je v podstatě celé 🙂 Jak jsem psal výše, můžete to míchat podle libosti (třídy, struktury, výčty) a zanořovat do tolika úrovní do kolika budete potřebovat.

Příště to bude trochu delší a bude to o rozšířeních (extensions), což je obdoba kategorie z Objective-C.