1
界是否有可能写出这样的事情和重用HelperTest.AnyHelper类型?重用斯卡拉类型的方法定义
class HelperUtil
{
/* this is what I would like to write... reuse the AnyHelper type in the definition */
def accept[HelperTest.AnyHelper](helper : HelperTest.AnyHelper) =
{
// code here
}
}
object HelperTest
{
type AnyHelper = T forSome { type T <: GenericHelper }
}
abstract class GenericHelper
{
val name = ""
}
目前,我不得不写这篇文章,因为编译器不会让我:
class HelperUtil
{
/* gets too verbose, if the generic type gets more complex and would be useful to reuse the type */
def accept[T <: GenericHelper](helper : T) =
{
// code here
}
}
abstract class GenericHelper
{
val name = ""
}
还是我完全错误的轨道上?
我所寻找的是“再利用”的类型泛型参数的方式,因为准确的参数用于几个地方。有没有办法,还是有其他的实施建议? – slaursen 2013-03-21 16:41:45
@slaursen我很抱歉,但我不明白“重复使用”是什么意思。你已经通过声明'helper'来重用类型'HelperTest.AnyHelper'。 – 2013-03-21 16:46:51
反复重复“[A <:某物[A]]”的示例。如果界限更加复杂,那将是地狱和错误倾向于不断重复它。 def method1 [A <:Something [A]](parm:A)= {...} def method2 [A <:Something [A]](text:String,parm:A )= {...} def method3 [A <:Something [A]](parm:A):List [A] = {...} etc }' – slaursen 2013-03-21 18:03:11