關於SO上的這個錯誤消息有幾個問題,但他們似乎都沒有涉及到這個問題。Scala論據過載中的匿名函數的類型
The argument types of an anonymous function must be fully known. (SLS 8.5)
問題的代碼塊試圖模仿Ruby的塊的功能性,與所添加的益處,即一個參數可以是在過程中匹配的模式。
object Block {
def apply(f: => Unit) = apply((_: String) => f)
def apply(f: String => Unit) = ???
}
def example() = {
Block { // Error!
case "A" => println("First letter of the alphabet")
case _ => println("Not the first letter of the alphabet")
}
}
即使向下一行,Scala可以清楚地看到我與字符串匹配,但無法推斷出參數類型。