按名称类型参数

时间:2012-11-16 12:00:13

标签: scala pass-by-name

想象一下,我有以下类定义:

class Foo[T]

我想做以下

def bar(x:Foo[ =>Int ]):Int = ???

但编译器失败,“此处不允许使用by-name参数类型”

如何使用通配名类型作为通用方法的类型参数?

1 个答案:

答案 0 :(得分:9)

你必须提供自己的懒惰包装。像这样:

class Lazy[T](wrp: => T) {
  lazy val value: T = wrp
}

然后:

def bar(x: Foo[Lazy[T]]): Int = ???