这个问题在这里已经有了答案:
How can I define an anonymous generic Scala function?
(2 个回答)
8年前关闭。
你们中的大多数人可能都知道可以在 scala 中以两种方式定义函数,有 'def' 方法和 lambda 方法......
使“def”类通用是相当简单的
def someFunc[T](a: T) { // insert body here
我在这里遇到的问题是如何使以下通用:
val someFunc = (a: Int) => // insert body here
当然现在 a 是一个整数,但是我需要做什么才能使其通用?
val someFunc[T] = (a: T) =>
不起作用,val someFunc = [T](a: T) =>
也不起作用是否有可能使它们通用,或者我应该坚持使用“def”变体?
最佳答案
正如兰德尔舒尔茨所说,def
不创建函数,而是创建方法。但是,它可以返回一个函数,这样您就可以创建像 identity
这样的通用函数。 Predef
中的函数.这看起来像这样:
def myId[A] = (a: A) => a
List(1,2,3) map myId
// List(1,2,3)
List("foo") map myId
// List("foo")
但请注意,调用
myId
没有任何类型信息推断 Nothing
.在上述情况下它可以工作,因为类型推断使用 map
的签名。 ,即 map[B](f: A => B)
, 其中 A
是列表的类型,B
推断为与 A
相同, 因为那是 myId
的签名.
关于function - 如何在 Scala 中使 lambda 函数通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372916/