有人能解釋我究竟發生了什麼嗎?我沒有完全進入它現在:命名參數中的下劃線
val s = Seq(1D,2D,3D,4D)
case class WithUnit(value: Double, unit: String)
s map { WithUnit(_,"cm") } // works
s map { WithUnit(value = _ , unit = "cm") } // error: missing parameter type for expanded function ((x$2) => value = x$2)
我猜編譯不容推斷參數類型,因爲我寫的參數的名稱。但爲什麼不呢?僅僅因爲陳述參數的名字,不應該更困難?!
謝謝!
啊,我明白了!現在我有了更深的理解...... _tightest非退化範圍_ ...我會記住的!謝謝! – 2011-03-10 13:11:01
可以說,這是一個錯誤。 WithUnit(_,「cm」)'因爲它被視爲一個部分應用的函數,而不是一個匿名函數文字。在與命名參數一起使用時,它不會得到相同的處理,我懷疑這只是一個疏忽。 – 2011-03-10 20:46:37
@Daniel:我不認爲你在「部分應用函數」和「匿名函數文字」之間繪製的區別存在。 – 2011-03-10 21:03:00