San*_*ane 5 scala pass-by-name
想象一下,我有以下类定义:
class Foo[T]
Run Code Online (Sandbox Code Playgroud)
我想做以下事情
def bar(x:Foo[ =>Int ]):Int = ???
Run Code Online (Sandbox Code Playgroud)
但编译器失败,"此处不允许使用by-name参数类型"
如何使用通配名类型作为通用方法的类型参数?
你必须提供自己的懒惰包装.像这样的东西:
class Lazy[T](wrp: => T) {
lazy val value: T = wrp
}
Run Code Online (Sandbox Code Playgroud)
然后:
def bar(x: Foo[Lazy[T]]): Int = ???
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |