3
這種精細編譯:爲什麼用作默認參數的函數字面量需要參數類型?
def walk[X](a: X)(f: X => Boolean): Boolean = f(a)
walk(1)(_ => true)
編譯沒有問題,以及:
def walk(a: Int)(f: Int => Boolean = _ => true): Boolean = f(a)
walk(1)()
這不:
def walk[X](a: X)(f: X => Boolean = _ => true): Boolean = f(a)
walk(1)()
的錯誤是:
Error:(1, 38) missing parameter type
明顯w^orkaround是使用(_: X) => true
,但爲什麼這是一個錯誤?我雖然認爲當第二個參數列表正在處理時,從第一個參數獲得的類型信息應該已經可用了?
測試使用Scala 2.11.8和2.12.1
哎呀我不小心刪除我的評論:) OK呀,我意識到了,但是請不要編輯它強調的問題(甚至更好,完全刪除這些行,問題是在定義中,不是調用) – slouc