6

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?

Sane
  • 2,334
  • 2
  • 17
  • 20

1 Answers1

10

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 = ???
Jean-Philippe Pellet
  • 59,296
  • 21
  • 173
  • 234