如何使用枚举作为一种类型?

时间:2011-11-17 20:39:04

标签: objective-c enums

在课堂Card内说,你已宣布

typedef enum {
  CLUBS, DIAMONDS, HEARTS, SPADES
} Suit

typedef enum {
  SIX, SEVEN, EIGHT ..
} Value

和指定的初始化程序

-(id) initWithValue: (Value) c andSuit: (Suit) s;

那么你如何在课堂外使用这个初始化器呢?

我试过了:

[Card alloc] initWithValue: (Card) Value.SIX andSuit: (Card) Suit.HEARTS];

请协助

3 个答案:

答案 0 :(得分:6)

Card *card = [[Card alloc] initWithValue: SIX andSuit: HEARTS];

答案 1 :(得分:5)

我会给出一个扩展的答案。如果您遵循标准的obj-c命名约定,那么您的代码将更具可读性。

通常,您将使用您的类名称采用传统的命名方案,然后使用相关的类型名称,例如:

typedef enum {
    CardSuitClubs,
    CardSuitDiamonds,
    CardSuitHearts,
    CardSuitSpades
} CardSuit;

typedef enum {
    CardValueTwo,
    ...,
    CardValueAce
} CardValue;

然后,在您需要的地方加入card.h,并使用初始化程序,如下所示:

Card *card = [[Card alloc] initWithCardValue:CardValueAce andCardSuit:CardSuitSpades];

答案 2 :(得分:1)

就是这样:

[[Card alloc] initWithValue:SIX andSuit:HEARTS];