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

Jam*_*sev 2 enums objective-c

在课堂内说Card,你已经宣布了

typedef enum {
  CLUBS, DIAMONDS, HEARTS, SPADES
} Suit
Run Code Online (Sandbox Code Playgroud)

和a

typedef enum {
  SIX, SEVEN, EIGHT ..
} Value
Run Code Online (Sandbox Code Playgroud)

和指定的初始化程序

-(id) initWithValue: (Value) c andSuit: (Suit) s;
Run Code Online (Sandbox Code Playgroud)

那你怎么会在课外使用这个初始化器呢?

我试过了:

[Card alloc] initWithValue: (Card) Value.SIX andSuit: (Card) Suit.HEARTS];
Run Code Online (Sandbox Code Playgroud)

请协助

ber*_*ium 6

Card *card = [[Card alloc] initWithValue: SIX andSuit: HEARTS];
Run Code Online (Sandbox Code Playgroud)


XJo*_*nes 5

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

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

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

typedef enum {
    CardValueTwo,
    ...,
    CardValueAce
} CardValue;
Run Code Online (Sandbox Code Playgroud)

然后,您可以card.h在需要的位置包含并使用初始化程序,如下所示:

Card *card = [[Card alloc] initWithCardValue:CardValueAce andCardSuit:CardSuitSpades];
Run Code Online (Sandbox Code Playgroud)