Я (относительно) новичок в программировании. Я работал над «Знакомством с разработкой приложений» от Apple, и так как нет какой-то брошюры с ответами, мне пришлось самому решать вопросы. Однако есть некоторые вещи, которые меня немного смущают:
Есть проблема, над которой я работаю:
Эта игровая площадка имеет встроенный тип Chicken. Цыпленок обладает свойством породы и характера, и оба свойства являются перечислениями.
Вот массив цыплят: цыплята = [{silk ie, сварливый} ...]
Задача состоит в том, чтобы подсчитать, сколько цыплят породы «леггорн» и характера «веселый» в массиве. Я придумал следующий код:
var chickenOfInterestCount = 0
for chicken in chickens {
switch chicken.temper {
case .hilarious:
switch chicken.breed {
case .leghorn:
chickenOfInterestCount += 1
default:
chickenOfInterestCount += 0
}
default:
chickenOfInterestCount += 0
}
}
chickenOfInterestCount
Это работает, но мне интересно, есть ли более эффективный способ сделать это? Могу ли я заставить переключатель проверять каждую курицу на наличие {leghorn, hilarious} и подсчитывать количество необходимых цыплят напрямую, а не использовать вложенный переключатель? (Все мои попытки попробовать это сами были подавлены страшно выглядящими сообщениями об ошибках, поэтому я догадываюсь, что нет). Исходя из этого, как работают циклы?
Когда я изначально изучал циклы, у меня сложилось впечатление, что целые числа использовались для l oop, например, первый l oop был i = 0, и код внутри выполнялся, затем второй l oop было i = 1, et c, где «i» действительно могло быть чем угодно, и идея была бы такой же. Здесь используется "курица". Почему я могу установить условие для chicken.temper? Что значит курица здесь? A для l oop учитывает тип массива, по которому он проходит? Так что же на самом деле происходит здесь, что-то вроде: «возьми 0-го цыпленка в массиве цыплят, назови его« цыпленком », а затем проверь его нрав» »*