私は基本的な相対位置を記述するために、そのようなネストされた列挙型を持っている:Swiftのswitch文によるアクセスのために列挙型をネストする最も良い方法は?
enum Location {
enum Top {
case Left
case Right
case Center
}
enum Bottom {
case Left
case Right
case Center
}
enum Left {
case Top
case Bottom
case Center
}
enum Right {
case Top
case Bottom
case Center
}
enum Center {
case Center
}
}
私はそれでswitch
ステートメントを実行しようとすると、列挙型のいずれも可能なケースとして表示しない、と私はリストにしようとした場合Enum case 'Top' not found in type 'Location'.
は今、この質問hereのバージョンがあります、そして最も有用な答えによれば、SH:
func switchOverEnum(enumCase: Location) {
switch enumCase {
case .Top:
print("hey this didn't cause an error whoops no it did")
}
}
エラーがある:彼らは、私はエラーを取得しますこのように行うことがウルド:完全に動作しますが、少し不格好、または洗練、または非スウィフト-のように思える
enum Location {
enum TopLocations {
case Left
case Right
case Center
}
enum BottomLocations {
case Left
case Right
case Center
}
enum LeftLocations {
case Top
case Bottom
case Center
}
enum RightLocations {
case Top
case Bottom
case Center
}
enum CenterLocations {
case Top
case Bottom
case Left
case Right
case Center
}
case Top(TopLocations)
case Bottom(BottomLocations)
case Left(LeftLocations)
case Right(RightLocations)
case Center(CenterLocations)
}
を。これは本当に最善の方法ですか?
なぜそれがうまくいかないのですか?これは、シンプルなことを最大限に複雑にします。これは完全に汗だくです。 –
あなたが何を求めているのか不明です。あなたのオリジナルはちょうど愚かでした( '.Top'はLocationのケースではなく、ネストされた列挙型なので、あなたが期待していたものを想像するのは難しいです)。そして、"最善の方法 "は意見の問題です。 – matt
私はこの質問を主に意見に基づいて終了するよう投票しています。回答は意見ではなく、嗜好に基づくものであり、事実ではありません。完全な、実際の例で[コードレビュー](http://codereview.stackexchange.com)に投稿することを検討してください。 – JAL