2016-03-29 7 views
1

カード、hereのデッキについてのチュートリアルを読んでいる間は、私が見つけた省略構文:よく遊び場でスウィフト「スイッチケース」

enum Suit: Int, CustomStringConvertible { 
    case Clubs = 1, Diamonds, Hearts, Spades 

    var description: String { 
    return ["♣️", "♦️", "❤️", "♠️"][rawValue - 1] 
    } 
} 

作品。 私はそれが短い構文のためにする必要があります理解:私はこの構文上の任意のドキュメントを見つけることができませんでした

enum Suit: Int, CustomStringConvertible { 
    case Clubs = 1, Diamonds, Hearts, Spades 

    var description: String { 
    switch self { 
     case .Spades: 
     return "♠️" 
     case .Clubs: 
     return "♣️" 
     case .Diamonds: 
     return "♦️" 
     case .Hearts: 
     return "♥️" 
    } 
    } 
} 

。それは名前を持っていますか、それとも公式文書または他の場所に記載されていますか?貢献していただきありがとうございます。

答えて

3

これは特別な構文ではありません。

  1. 配列リテラルは、次の構文を添字Array<String>別称、[String]

  2. アレイである["♣️", "♦️", "❤️", "♠️"]myArray[i]または、この場合は、array[rawValue - 1]arrayは#1からリテラルであるこれは、2つの別々のものです。

["♣️", "♦️", "❤️", "♠️"][rawValue - 1]ちょうどそのアレイのrawValue - 1番目のエントリを意味します。それは、列挙型がenum Suit: Intで宣言されているので、各値に基礎となるrawValueがあることに依存しています。

2
["♣️", "♦️", "❤️", "♠️"][rawValue - 1] 

は特殊な構文ではありません。それはどのように分解されるのですか:

let array: [String] = ["♣️", "♦️", "❤️", "♠️"] 
let index: Int = self.rawValue - 1 
let symbol = array[index] 
return symbol 
関連する問題