我的第一个Scala程序和我卡住了。scala覆盖无
所以基本上我试图在过去的声明中覆盖“last”潜在的None值。
import java.util.Date;
object TimeUtil {
var timerM = Map("" -> new Date().getTime());
def timeit(seq:String, comment:String) {
val last = timerM.get(seq)
val cur = new Date().getTime()
timerM += seq -> cur;
println(timerM)
if(last == None) return;
val past = (last == None) ? 0l : last ;
Console.println("Time:" + seq + comment + ":" + (cur - past)/1000 )
}
def main(args : Array[String]) {
timeit("setup ", "mmm")
timeit("setup ", "done")
}
}
你的意思是取出行'if(last == None)return;'?正如所写的,当初始化“过去”时,“last”永远不会是“None”。也就是说,编写该初始化程序的惯用方法是'val past = last getOrElse 01'。 – 2010-10-18 22:03:06
嗯,有这个编译器错误,我想也许它不够聪明,推断该逻辑阻止它为空。 – smartnut007 2010-10-18 22:08:56
如果适用,你应该总是在你的问题中包含任何错误信息(在这种情况下它透明地是) – 2010-10-19 09:27:49