【发布时间】:2018-04-28 08:10:54
【问题描述】:
我不确定我是否正确执行此操作,我正在尝试将 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 与我的预期结果相比会出现这种情况。
先谢谢了,供参考,提示如下:
向 SwimmingWorkout 添加一个名为 save() 的实例方法,该方法不接受参数并且没有返回值。此方法会将其实例添加到 SwimmingWorkout 上与其游泳行程相对应的静态数组中。在 save() 内部编写一个 switch 语句来打开实例的 stroke 属性,并将 self 附加到正确的数组中。对您在上面创建的两个 SwimmingWorkout 实例调用 save,然后打印应该添加它们的数组以查看您的 save 方法是否正常工作。
【问题讨论】: