struct RunningWorkout {
var distance: Double
var time: Double
var elevation: Double
static func mileTimeFor(distance: Double, time: Double) -> Double {
return (distance/1600)/time
}
}
let running = RunningWorkout(distance: 3200, time: 30, elevation: 1100)
print(running.mileTimeFor)
我的打印行出错了:
静态成员' mileTimeFor'不能在类型' RunningWorkout'
的实例上使用
我不确定如何修复它。任何帮助将不胜感激。
答案 0 :(得分:0)
首先,您尝试使用Type
的实例访问Type
函数,但这是错误的。当您声明Type
函数(例如静态)时,您必须使用Type
本身访问它。
现在,您的意图是根据每个实例的值计算一些东西。所以你需要一个实例函数。像:
func mileTimeFor(distance: Double, time: Double) -> Double {
return (distance/1600)/time
}
如果要使用上述函数计算值,还需要传递参数。这意味着,您必须调用函数调用:
running.mileTimeFor(distance: 100, time: 60)
但您可以将功能签名更改为更紧凑,例如:
func mileTimeFor() -> Double {
return (distance/1600)/time
}
// call this as:
running.mileTimeFor()
或者,您可以在 Swift 中选择另一个选项@Leo Dabus评论。您可以使用与上述函数(computed
)完全相同的mileTimeFor()
变量:
var mileTimeFor: Double {
return (distance/1600)/time
}
// use this as:
running.mileTimeFor
答案 1 :(得分:0)
tldr:删除static
关键字。