Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
enum Category: CaseIterable { case food, taxi }
struct Expense {
let category: Category
let cost: Double
}
let ride = Expense(category: .taxi, cost: 3.5)
let lunch = Expense(category: .food, cost: 2)
var totals: [Category: Double] = [:]
for e in [ride, lunch, ride] {
totals[e.category, default: 0] += e.cost
}
print(Category.allCases.map { totals[$0, default: 0] })[2.0, 7.0]
- Ждать
[7.0, 2.0], считая, что итоги идут в порядке первых чеков.mapидёт поallCases, а тамfoodстоит первым, как в объявлении. - Ждать ошибку компиляции, считая, что ключу-перечислению нужна пометка
Hashable. Swift сам делает перечисление без связанных значенийHashable.
- Что выведет программа, если объявить
taxiраньшеfood? - Почему
totals.keys.sorted()здесь не компилируется и как ещё напечатать итоги в постоянном порядке?