Imagine I have the following class definition:
class Foo[T]
and I want to do the following
def bar(x:Foo[ =>Int ]):Int = ???
But compiler fails with "no by-name parameter type allowed here"
How can I use a by-name type as type parameter for a generic method?
You’ll have to provide your own lazy wrapper. Something like this:
class Lazy[T](wrp: => T) {
lazy val value: T = wrp
}
and then:
def bar(x: Foo[Lazy[T]]): Int = ???