2013-10-09 230 views
1

由於某種原因,我有一個抽象類與方法def apply(some : Some) : Any。其中一個子類特別返回部分應用函數,如斯卡拉鑄造功能

return twoArgumentFunction(_ : Int, 1) 

但是apply的簽名是Any。問題是如何將其轉換爲一個參數的函數?

def usingApply(){ var f = A.apply() ; f(4)} 

我期待一些asInstanceOf()或類似的東西

+0

您可以爲上下文添加更多的代碼嗎? – Shadowlands

+2

只是說:返回'任何',然後通過類型鑄造使用它是一個嚴重的設計問題 – Ankur

+0

@Ankur是的,我知道這一點!我有很多使用apply(some)實現抽象類的類,只有一個類需要返回值。這是一個很好的方式,並且一直在竊聽我整天,但是我最後的手段 – Illiax

回答

2

我認爲你只是困惑的語法asInstanceOf。您提供在方括號(括號不)目標類型,就像任何其他泛型類型參數:

def usingApply(){ var f = A.apply().asInstanceOf[Int=>Int] ; f(4)} 

這將投出的結果適用於Int=>Int,這是一樣的Function1[Int,Int]

+0

對不起!我misstyped()而不是[]。 但答案正是我需要的!謝謝! – Illiax