如何用val调用多态函数

时间:2015-03-09 14:04:02

标签: scala

给出以下多态方法

def get[T](implicit m: ClassTag[T]) : Seq[T]

如何使用val中的参数调用。不幸的是,以下内容无法编译:

val clazz = Class[Int]
get[clazz]

[更新]我试图这样做:

val classes = List(String.getClass, Int.getClass)
classes.map { c => get(ClassTag(c)) }

3 个答案:

答案 0 :(得分:1)

您不能提供类似于val的类型参数,Class[Int]也不能提供值。目前还不清楚你真正想做什么。

您可以使用类型别名:

type C = Int
get[C]

您可以使用ClassTag明确地查找classTag[A],这与向get[A]提供类型提示基本相同:

get(classTag[Int])

您还可以从类实例中获取ClassTag,并明确传递它:

val ct: ClassTag[Int] = ClassTag(1.getClass)
get(ct)

这些似乎都不是特别有用。

答案 1 :(得分:0)

不确定您要实现的目标,但您可以使用类型别名:

type clazz = Class[Int]

答案 2 :(得分:0)

您可以直接将其命名为:

 val result = get[Int](ClassTag[1]);