iOS - это задача для enums? - PullRequest
       13

iOS - это задача для enums?

2 голосов
/ 04 февраля 2012

Если я захочу реализовать следующий код, подойдут ли перечисления? Я посмотрел несколько вопросов по перечислениям, но все еще немного не уверен.

if (dayOfWeek == Monday)
{
    // Do something
}
else if (dayOfWeek == Tuesday || dayOfWeek == Wednesday)
{
    // Do something else
}

Если это кажется правильным, как бы мне начать инициализацию enum? Будет ли это идти в заголовок или файл реализации?

Ответы [ 2 ]

7 голосов
/ 04 февраля 2012

Если я хочу реализовать следующий код, будут ли уместны перечисления?

Не вдаваясь в подробности об альтернативах - Да.

как быЯ собираюсь инициализировать перечисление?

Я обычно объявляю перечисление в C примерно так:

typedef enum MONDayOfWeek {
  MONDayOfWeek_Undefined = 0,
  MONDayOfWeek_Monday,
  MONDayOfWeek_Tuesday,
  MONDayOfWeek_Wednesday,
  MONDayOfWeek_Thursday,
  MONDayOfWeek_Friday,
  MONDayOfWeek_Saturday,
  MONDayOfWeek_Sunday
} MONDayOfWeek;

// in use:
MONDayOfWeek day = MONDayOfWeek_Monday;

MON будет префиксом вашей библиотеки или организации.DayOfWeek будет именем enum в библиотеке, тогда значения будут добавлены.

Хотя это многословно, вы склонны избегать столкновений довольно хорошо.

Будет ли оно идти взаголовок или файл реализации?

В заголовке, если вы хотите использовать его несколькими файлами, иначе в файле реализации.

2 голосов
/ 04 февраля 2012

Да, это было бы здорово для перечислений, посмотрите этот пост SO, чтобы увидеть конструкцию перечисления:

Что такое определение типа в Objective-C?

typedef enum {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
} DayOfTheWeek;

Кроме того, вы можете решить, помещать ли реализацию enum в класс, в котором вы работаете, или в файл заголовка.

...