Scala 以类型参数作为参数传递函数
我想创建一个函数Scala 以类型参数作为参数传递函数,scala,type-parameter,Scala,Type Parameter,我想创建一个函数g,它将函数f作为参数,其中f有一个类型参数。我无法获得编译的g的签名。一次尝试是这样的: scala> def mock1[A](): A = null.asInstanceOf[A] // STUB mock1: [A]()A scala> def mock2[A](): A = null.asInstanceOf[A] // STUB mock2: [A]()A scala> def g0(f: [A]() => A): Int = f[Int]
g
,它将函数f
作为参数,其中f
有一个类型参数。我无法获得编译的g
的签名。一次尝试是这样的:
scala> def mock1[A](): A = null.asInstanceOf[A] // STUB
mock1: [A]()A
scala> def mock2[A](): A = null.asInstanceOf[A] // STUB
mock2: [A]()A
scala> def g0(f: [A]() => A): Int = f[Int]()
<console>:1: error: identifier expected but '[' found.
def g0(f: [A]() => A): Int = f[Int]()
^
有没有一种方法可以在不引入包装器类的情况下实现这一点?这样如何:
def mock[A](): A = null.asInstanceOf[A]
def g[A](f:() => A): A = f()
g(mock[Int])
Scala(目前)不支持多态函数值。您有两个选择:
谢谢,但是不行。我的例子过于简单化了。我需要能够在
g
的主体中使用不同的类型参数调用f
。例如,类似于def g(f[A]()=>A):Boolean={f[String]()==f[Int]().toString}
。
def mock[A](): A = null.asInstanceOf[A]
def g[A](f:() => A): A = f()
g(mock[Int])