なぜこのような生の値で列挙を定義できないのですか?生の値を持つ列挙
enum Edges : (Double, Double) {
case TopLeft = (0.0, 0.0)
case TopRight = (1.0, 0.0)
case BottomLeft = (0.0, 1.0)
case BottomRight = (1.0, 1.0)
}
なぜこのような生の値で列挙を定義できないのですか?生の値を持つ列挙
enum Edges : (Double, Double) {
case TopLeft = (0.0, 0.0)
case TopRight = (1.0, 0.0)
case BottomLeft = (0.0, 1.0)
case BottomRight = (1.0, 1.0)
}
生の値は、文字列、文字、または整数または浮動小数点数型のいずれであってもよいです。
しかし、あなたのための代替ソリューションがあります:
enum Edges {
case TopLeft
case TopRight
case BottomLeft
case BottomRight
func getTuple() -> (Double, Double) {
switch self {
case .TopLeft:
return (0.0, 0.0)
case .TopRight:
return (1.0, 0.0)
case .BottomLeft:
return (0.0, 1.0)
case .BottomRight:
return (1.0, 1.0)
}
}
}
let a = Edges.BottomLeft
a.getTuple() // returning (0, 1)
タプルは列挙型の生の値の型にすることはできません。 The Swift Programming Language:
生の値は、文字列、文字、整数型または浮動小数点型のいずれでもかまいません。
あなたはしかし、カスタムゲッターを作成することができます。
enum Edges {
case TopLeft, TopRight, BottomLeft, BottomRight
var rawValue: (Double, Double) {
switch self {
case .TopLeft: return (0, 0)
case .TopRight: return (1, 0)
case .BottomLeft: return (0, 1)
case .BottomRight: return (1, 1)
}
}
}
をあなたにこのコードの作品をありがとうございました。しかし、**について説明することができます**それぞれの生の値は列挙宣言内で一意でなければなりません** –
@Alexanderは、同じ生の値を持つ2つの異なる列挙型エントリを作成してはいけないことを意味します。例えば 'case TopLeft = 1、case TopRight = 1、BottomLeft = 3の場合、BottomRight = 4の場合は、2倍の '1'のため許可されません。 – luk2302
私のデータはあなたのものと同じですので、私は前に事例を宣言しなければなりませんか? –