Swift"开关盒"缩写语法

时间:2016-03-29 08:04:55

标签: swift

在阅读关于一副卡片的教程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 "♥️"
    }
  }
}

我无法找到有关此语法的任何文档。它是否有名称或在官方文档或任何其他地方描述?感谢您的任何贡献。

2 个答案:

答案 0 :(得分:3)

这本身并不是任何特殊的语法。这是两个不同的事情:

  1. 数组文字,["♣️", "♦️", "❤️", "♠️"]Array<String> a.k.a。[String]

  2. 数组下标语法:myArray[i]或在这种情况下为array[rawValue - 1],其中array是来自#1的文字。

  3. ["♣️", "♦️", "❤️", "♠️"][rawValue - 1]仅表示该数组的rawValue - 1条目。它依赖于枚举是用enum Suit: Int声明的事实,因此每个值都有一个基础rawValue

答案 1 :(得分:2)

C:/Users/Me/Documents/CApplicationTemplate.xlsx

不是特殊语法。以下是它将如何分解:

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