【问题标题】:Swift enums as index to an arraySwift 枚举作为数组的索引
【发布时间】:2019-07-06 23:17:28
【问题描述】:

如何在 Swift 中使用枚举对数组进行简单索引?

我是一名试图理解 Swift 的 C 程序员。这很令人困惑。

var  arr: [String] = ["2.16", "4.3", "0.101"]

enum Ptr: Int {
    case first = 0
    case second = 1
    case third = 2    
}

var ix = Int(Ptr.first)
print (ix)
let e = Double (arr[ix])

`

我希望 Ptr.first 会产生一个 0 整数,我可以将其作为数组 arr 的索引。

【问题讨论】:

  • let ix = Ptr.first.rawValue
  • enum Ptr: Int { case first, second, third } let arr = ["2.16", "4.3", "0.101"] let ix: Ptr = .first print (ix) let e = Double(arr[ix.rawValue])
  • 谢谢。来自几十年的 C 编程,Swift 是相当违反直觉的。

标签: arrays swift enums


【解决方案1】:

为什么它不起作用是因为枚举中的所有情况(第一、第二、第三)本质上都是Ptr 类型(你的枚举的类型)。因此,为了获得 0,您需要访问案例的 rawValue 属性,它是一个 Int:

var ix = Ptr.first.rawValue //accessing the case's rawValue property
print (ix)
let e = Double (arr[ix])

希望有帮助!

【讨论】:

  • 谢谢。为什么 Apple 不能坚持使用 C?
  • 嗯,swift 是一种非常强大的语言。如果您熟悉该语言,我想您会非常喜欢它。
猜你喜欢
  • 2016-06-26
  • 2010-09-29
  • 1970-01-01
  • 2010-11-02
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
相关资源
最近更新 更多