Вы можете использовать перечисление вместо строки для текущего дня, тогда вместо набора переменных дня недели вы можете получить массив размером NUM_WEEKDAYS
Тогда ваш код будет больше похож на:
Alarms[weekDay] = ON;
Еще несколько подробностей, поскольку это довольно C-like:
Сначала перечисление связывает целые числа со значениями. Итак, вот примерное перечисление:
<code>enum Days
{
MON,
TUES,
WEDS,
THURS,
FRI,
SAT,
SUN,
NUM_WEEKDAYS
};
Таким образом, массив содержит каждое значение в последовательности, вместо того, чтобы:
<code>MonAlarm
TuesAlarm
WedsAlarm
...
Вы бы просто получили Alarms[NUM_WEEKDAYS]
. Тогда вы можете получить доступ к будильнику понедельника через Alarms[MON]
Так же, как вы привыкли обращаться к mondayAlarm
.
Другой проблемой является то, что вы обращаетесь к своим дням недели через строку, этого следует избегать - строковые операции выполняются как SLOOOOOOOOOOOOOOOOOOOOOWOW. Вместо этого используйте перечисление, если это возможно. Откуда вы тянете эту строку? Дайте мне некоторые детали, и я покажу вам, как это исправить. Как только вы дойдете до точки, в качестве входного значения используется значение перечисления «MON», вы просто передаете его без необходимости использования if.