如何在元组分配中混合本地成员和替代成员

时间:2019-01-25 22:22:00

标签: scala override traits

我有计时功能:

def time[R](code: => R, t: Long = System.currentTimeMillis()) = 
  (code,  System.currentTimeMillis() - t )

它返回代码返回值的元组,以及代码执行所需的时间。

我具有跨多个对象计时的各种特性:

trait TimingStats {
  var step1Time, step2Time, step3Time : Long
}

我有一个对象在做我想做的事情:

class Process extends TimingStats {
  var (step1Result, step1Time) = time(Thread.sleep(1000))
  var (step2Result, step2Time) = time(Thread.sleep(2000))
  var (step3Result, step3Time) = time(Thread.sleep(3000))
}

(当然,Thread.sleep实际上是有用的代码,而不仅仅是睡眠指令)

但是,这不起作用,编译器失败,提示“变量step1Time需要'override'修饰符”。

我实际上应该如何尝试呢?

PS-更大的背景是,我随后将这些统计信息报告给Prometheus,作为应用程序监视的一部分,以防您打算建议各种分析工具。

1 个答案:

答案 0 :(得分:2)

问题不在于元组,问题在于您不能用可变值覆盖不可变值。将var替换为val,它将编译。