静态成员' mileTimeFor'不能在类型' RunningWorkout'的实例上使用

时间:2018-02-14 04:01:30

标签: swift

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'

的实例上使用

我不确定如何修复它。任何帮助将不胜感激。

2 个答案:

答案 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关键字。