Swift 静态成员';米莱蒂梅弗';无法在类型为';跑步训练';
我的打印行出现错误,原因如下: 静态成员“mileTimeFor”不能用于类型为“RunningOutput”的实例Swift 静态成员';米莱蒂梅弗';无法在类型为';跑步训练';,swift,Swift,我的打印行出现错误,原因如下: 静态成员“mileTimeFor”不能用于类型为“RunningOutput”的实例 我不知道如何修理它。任何帮助都将不胜感激。首先,您试图使用类型的实例访问类型函数,这是错误的。当您声明类型函数(例如静态)时,必须使用类型本身来访问它 现在,您的目的是根据每个实例的值计算一些东西。所以你需要有一个实例函数。比如: struct RunningWorkout { var distance: Double var time: Double v
我不知道如何修理它。任何帮助都将不胜感激。首先,您试图使用
类型
的实例访问类型
函数,这是错误的。当您声明类型
函数(例如静态)时,必须使用类型
本身来访问它
现在,您的目的是根据每个实例的值计算一些东西。所以你需要有一个实例函数。比如:
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)
如果要使用上述函数计算值,还需要传递参数。这意味着您必须调用函数调用,如下所示:
func mileTimeFor(distance: Double, time: Double) -> Double {
return (distance/1600)/time
}
但您可以将函数签名更改为更紧凑,如:
running.mileTimeFor(distance: 100, time: 60)
或者,正如@Leo Dabus评论的那样,您在Swift中有另一个选项。您可以使用与上述函数完全相同的计算变量(mileTimeFor()
):
tldr:删除static
关键字 对类实例使用静态func,但必须对类本身使用。跑步锻炼。mileTimeFor(距离:Double,时间:Double)您需要的是一个计算属性var mileTime:Double{return time/(距离/1600)}
func mileTimeFor() -> Double {
return (distance/1600)/time
}
// call this as:
running.mileTimeFor()
var mileTimeFor: Double {
return (distance/1600)/time
}
// use this as:
running.mileTimeFor