2017-01-31 10 views
0

Swiftで定義された関係を持つ入れ子になった列挙型を作成できるかどうかを知りたいと思います。SWIFT:ネストされた列挙型のリレーションシップを作成する方法はありますか?

例:

Cities.Boston.Streets.<streets in Boston> 
Cities.Boston.Avenues.<avenues in Boston> 
Cities.Chicago.Streets.<streets in Chicago> 
Cities.Chicago.Avenues.<avenues in Chicago> 
+1

複数のENUMをネストできます。しかし、あなたがすべての都市を探しているなら、あなたは多くのコードで終わるでしょう。 – GoodSp33d

+0

都市と街を例として使用していますが、実際の世界のシナリオでは多くのことがあります。少ない組み合わせ。興味のある拡張サウンドを使用して、提案したソリューションの例を投稿できますか?ありがとう! – AlexVPerl

答えて

3
enum Cities {} 

extension Cities { 
    enum Boston{} 
    enum Chicago{} 
} 

extension Cities.Boston { 
    enum Streets { 
     case Ave 
     case AveN 
    } 
} 

同様にあなたは拡張機能が追加されCities.Boston.Streets.Ave

唯一の理由は、構造化された方法でそれを持っているように、あなたがそれにアクセスすることができますCities.Chicagoのために拡張することができます。あなたがメインのCities enumにも定義していれば、すべて同じです。

あなたが関係付きの列挙型を探しているとはどういう意味でしょうか。

+0

'LocationProtocol {}'は次のようにいくつかの構造を持つことができます: 'var location:LocationProtocol?' '私は' 'enum Streets:String、LocationProtocol'を実行し、後で' 'location = Cities.Boston.Streets.secondStreet 'また、' location = Cities.Chicago.Avenues.FirstAvenue'も参照してください。しかし、 'LocationProtocol'に' func address() - > String'を追加すると、全体の名前をどのように出力できますか – muescha

+0

'print(Cities.Boston.Avenues.firstAvenue.address)' - > 'Bosten City \ nファーストアベニュー ' – muescha

+0

https://gist.github.com/muescha/b83bfbfe4b0446b280857bbf0d8f9b5c – muescha

関連する問題