【问题标题】:How to use enum as a type?如何使用枚举作为类型?
【发布时间】:2011-11-17 20:39:04
【问题描述】:

说在类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];

请帮忙

【问题讨论】:

    标签: objective-c enums


    【解决方案1】:
    Card *card = [[Card alloc] initWithValue: SIX andSuit: HEARTS];
    

    【讨论】:

      【解决方案2】:

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

      通常,您会采用常规命名方案,使用您的类名后跟相关类型名称,例如:

      typedef enum {
          CardSuitClubs,
          CardSuitDiamonds,
          CardSuitHearts,
          CardSuitSpades
      } CardSuit;
      
      typedef enum {
          CardValueTwo,
          ...,
          CardValueAce
      } CardValue;
      

      然后,在需要的地方包含 card.h 并按如下方式使用初始化程序:

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

      【讨论】:

        【解决方案3】:

        就这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-09
          • 1970-01-01
          • 2020-12-05
          相关资源
          最近更新 更多