我的第一個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