2013-10-09 170 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