Я не уверен, что если я делаю это правильно, я пытаюсь сохранить экземпляр Struc в массив статических переменных, но имя экземпляра не добавляется в массив ... Вот код ниже:
struct SwimmingWorkout {
let distance: Double //meters
let time: Double //Seconds
let stroke: Stroke
enum Stroke {
case freestyle, butterfly, backstroke, breaststroke
}
static var freestyleWorkouts = [SwimmingWorkout]()
static var butterflyWorkouts = [SwimmingWorkout]()
static var backstrokeWorkouts = [SwimmingWorkout]()
static var breaststrokeWorkouts = [SwimmingWorkout]()
func save() {
switch stroke {
case .freestyle:
SwimmingWorkout.freestyleWorkouts += [self]
case .butterfly:
SwimmingWorkout.butterflyWorkouts += [self]
case .backstroke:
SwimmingWorkout.backstrokeWorkouts += [self]
case .breaststroke:
SwimmingWorkout.breaststrokeWorkouts += [self]
default:
print("Error")
}
}
}
Я ожидаю, что
let swim1 = SwimmingWorkout(distance: 100, time: 180, stroke: .butterfly)
let swim2 = SwimmingWorkout(distance: 200, time: 320, stroke: .butterfly)
swim1.save()
swim2.save()
for workout in SwimmingWorkout.butterflyWorkouts {
print(workout)
}
должно привести к выводу:
swim1(distance: 100.0, time: 180.0, stroke: Stroke.butterfly)
swim2(distance: 200.0, time: 320.0, stroke: Stroke.butterfly)
но я получаю:
SwimmingWorkout(distance: 100.0, time: 180.0, stroke: __lldb_expr_18.SwimmingWorkout.Stroke.butterfly)
SwimmingWorkout(distance: 200.0, time: 320.0, stroke: __lldb_expr_18.SwimmingWorkout.Stroke.butterfly)
Что мне здесь не хватает? Я даже не совсем уверен, почему stroke: __lldb_expr_18.SwimmingWorkout.Stroke.butterfly
так получается по сравнению с моим ожидаемым результатом.
Заранее спасибо, для справки, вот подсказка:
Добавить экземпляр метода к SwimWorkout, который называется save (), который не принимает параметров и не имеет возвращаемого значения. Этот метод добавит свой экземпляр к статическому массиву на SwimWorkout, который соответствует его плаванию. Внутри save () напишите оператор switch, который включает свойство stroke экземпляра и добавляет self к соответствующему массиву. Вызовите save для двух экземпляров SwimWorkout, которые вы создали выше, а затем распечатайте массив (ы), к которым они должны были быть добавлены, чтобы проверить, правильно ли работает ваш метод сохранения.