2016-05-11 2 views
0
enum Type { 
    case A 
    case B 

    func do() { 

    } 
} 

私は私はあなたが列挙型で可能である何をしたいとは思わない場合funcをSwiftのEnumの特定のケースに定義する方法は?

+2

あなたの質問は明確ではありません。 Enum型の中のケース固有の関数を定義することはできません。 – Shripada

+1

Type.Aでしか呼び出せないがType.Bではない関数を定義したいと思うと思います。 – Sweeper

答えて

0

のために利用できるために行うたいと思います。

しかし、それはトリックで行うことができます。

まず、Typeというクラスを作成:

class Type { private init() {} } 

をそしてTypeを継承するために、2つのクラス、ATypeBTypeを作成します。

// Put this in the same file as Type 
class AType: Type { private init() {} } 
class BType: Type { private init() {} } 

プライベート初期化子がATypeを作成するために、外部コードを防ぐことで、 BTypeオブジェクトです。 Type

、追加これらの静的プロパティ:

static let A = AType() 
static let B = BType() 

は、その後、あなたは基本的に行われています!

Type.Aにアクセスできる方法を追加するには、ATypeクラスに追加するだけです。

このように、Type.AType.Bは、Typeオブジェクトに割り当てることができます。

+0

しかし、 'switch'を使用してEnumのアクセントを失ってしまいました。とにかく、ハックのおかげで。 –

+0

私の答えがあなたの質問に答えると思うなら、そのチェックマークをクリックすることでそれを受け入れることを検討してください。 @ user2215977 – Sweeper

関連する問題