2

你如何声明一个可以用这种方法分配的变量:

def inTransaction[A](a: =>A): A =
  if(! Session.hasCurrentSession)
    _executeTransactionWithin(SessionFactory.newSession, a _)
  else {
    a
  }

在此先感谢,埃塔姆。

4

2 回答 2

2

正如范式所说,您需要分配一个类型。但作为一种解决方法,您可以使用一个对象。

object myFunc {
  def apply[A](a: =>A): A = ???
}
于 2013-08-14T11:00:28.870 回答
1

您不能直接将方法分配给变量,它必须在闭包对象 ( Function*) 中进行转换。_这种转换可以通过在函数名称后添加一个隐式或手动发生。

由于变量不能是泛型的,因此您必须在分配期间固定类型。例如:

scala> def size[A]( lst: List[A] ) = lst.size
size: [A](lst: List[A])Int

scala> var f = size[Int] _
f: List[Int] => Int = <function1>
于 2013-08-14T10:57:02.490 回答