越來越類型消除編譯器警告匹配任何人都可以重新編寫此代碼做同樣的事情,但沒有任何編譯器警告,請: -我怎麼能一個函數簽名,而不在斯卡拉
object TestTypeErasure {
def main(args:Array[String]) {
def myFunction(myObject:Any):Boolean = {
true
}
val myVariable: (Any => Boolean) = myFunction
myVariable match {
case function:(Any => Boolean) => println("Match")
}
}
}
千thankyous
Keith
更新!!!!對不起,這是一個真正的散列。它我的SO
第一個問題,只是爲了讓大師們知道我已經沿着這個線路也無濟於事試過的東西: - (不能編譯)
object TestTypeErasure {
def doTest(parameter: Any) = {
parameter match {
case function:Function1[_, _] => function("Whatever")
}
}
def main(args:Array[String]) {
}
}
我得到錯誤: -
TestTypeErasure.scala:6: error: type mismatch;
found : java.lang.String("Whatever")
required: _
case function:Function1[_, _] => function("Whatever")
^
one error found
再次感謝
基思
嗨 我已經採取了看那個。我嘗試了最佳答案。接下來的困難是我想調用這個函數。 如果我改變代碼來實際調用下面的函數,我得到一個編譯器錯誤。有誰知道我怎麼能解決這個 對象TestTypeErasure { 高清doTest(參數:任何)= { 參數匹配{ 情況下功能:功能1 [_,_] =>函數( 「什麼」) } } 高清主(參數:數組[字符串]){} } 再次感謝 基思 – Keith 2010-01-25 15:42:33