function - 如何在 Scala 中使 lambda 函数通用?

标签 function scala generics lambda

这个问题在这里已经有了答案:





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/

相关文章:

delphi - 如何在派生类型中使用泛型方法

r - 尝试为包创建函数,该函数在存在分类变量时自动绘制给定模型的变量响应

C将未知大小的数组传递给单个变量中的函数

regex - 模式匹配时是否可以使非捕获组在 Scala 正则表达式中工作

scala - Spark 数据集中的 max() 和 struct()

java - T 扩展 SomeClass 的意义何在?

c++ - 函数应用关联到左边

postgresql - 有没有 "temp function"这样的东西?

java - 为什么我可以用 "java -cp scala-library.jar;. Hello World"启动 Scala 编译器?

java - Kotlin 泛型转换为更具体的子类