3
我试图写一个简单的转换器,把一个java.util.Function
成scala.Function1
:编写一个返回函数=> T
def toScalaProducer[T](f: JavaFunction0[T]) : => T = => f()
这里是行之有效另一种变体:
def toScalaFunction[T](f: JavaFunction0[T]) :() => T =
() => f.apply()
问题是我想将转换的函数传递到现有的Scala API中,但that API只接受=> T
类型的参数,而不是() => T
类型的参数。
有没有办法写toScalaProducer
函数?
你确定这不工作?这不是一种类型,这就是所谓的懒惰评估,也就是说,您传入的内容只是在方法主体中需要时才评估,而不是之前,简而言之,您需要传入“A”作为类型,并且'()=> T'非常好。 –