1. ホーム
  2. swift

[解決済み] Swift で Enumeration のアソシエーション値にアクセスする

2023-07-03 21:20:11

質問

このコードでは、私は本当に役に立たない列挙型を書きました。 Number をIntかFloatで定義しています。

関連付けで設定した値にアクセスする方法がわかりません。もし私がそれを印刷しようとすると、単に (Enum Value)

enum Number {
    case int (Int)
    case float (Float)
}

let integer = Number.int(10)
let float = Number.float(10.5)
println("integer is \(integer)")
println("float is \(float)")

どのように解決するのですか?

値は列挙型のインスタンスに関連付けられます。そのため、スイッチなしでアクセスするには、ゲッターを作成して、明示的に利用できるようにする必要があります。以下のような感じです。

enum Number {
    case int(Int)
    case float(Float)

    func get() -> NSNumber {
        switch self {
        case .int(let num):
            return num
        case .float(let num):
            return num
        }
    }
}

var vInteger = Number.int(10)
var vFloat = Number.float(10.5)

println(vInteger.get())
println(vFloat.get())

将来的にはそのようなものが自動的に作られるかもしれませんし、より短い利便性が言語に追加されるかもしれませんね。