scala - 如何在 Scala 中定义提升函数

标签 scala

谁能帮我,如何定义这个函数:

def lift[A, B, T](op: (T,T) => T)(f: A => T, g: B => T): (A,B) => T = /* ... */

最佳答案

也许

def lift[A, B, T](op: (T,T) => T)(f: A => T, g: B => T): (A,B) => T =
  (a: A, b: B) => op(f(a), g(b))

给出

def op(a: Int, b: Int): Int = a + b
def f(x: String): Int = x.toInt
def g(x: List[String]): Int = x.length

lift(op)(f,g)("41", List("2"))
// Int = 42

关于scala - 如何在 Scala 中定义提升函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66841777/

相关文章:

scala - 如何定义接受柯里化(Currying)函数参数的函数?

scala - 在 Scala 中创建星期几枚举的​​简洁方法

java - 使用 scala 整理日志记录?

scala - 关于 Play 框架验证表单

mysql - 如何在 Slick 中插入具有默认值的字段

scala - Play2 + 卡斯巴 : How to provide an implicit Writes for ObjectId

scala - Spark 对象的类型参数边界很难获得

scala - 无法理解 scala 函数应用程序中的占位符 _ 行为

scala - 为什么Keep.None不影响Akka流执行结果?

scala - 为什么 TypeTag 没有方法 runtimeClass 但 Manifest 和 ClassTag 有