You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala基础学习:prod与lift高阶函数返回实现疑问

完整实现代码

你给出的代码里函数签名和实现块之间遗漏了等号=,属于语法错误,修正后的完整实现如下:

def compose[A,B,C](f: A => B)(g: B => C): A => C = {
  a: A => g(f(a))
}

def prod[A,B,C,D](f: A => C, g: B => D): (A, B) => (C, D) = {
  (a: A, b: B) => (f(a), g(b))
}

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

逻辑说明

prod函数

prod的作用是将两个独立的单参数函数,组合为一个处理二元元组的函数:

  • 接收元组的两个输入值a和b
  • 分别将a传给f、b传给g做计算
  • 将两个计算结果组装为新的二元元组返回即可

举个实际调用示例:

val f: Int => String = _.toString
val g: Boolean => Int = if (_) 1 else 0
// 调用prod组合后的函数,输入(123, false),返回("123", 0)
prod(f, g)(123, false)

lift函数

lift的作用是将一个针对T类型的二元操作,提升为针对「返回T类型的单参数函数」的组合操作:

  • 接收同一个输入值a
  • 分别用f和g对a做计算,得到两个T类型的结果
  • 将两个结果传入op做运算,返回最终结果即可

举个实际调用示例:

val op: (Int, Int) => Int = _ + _
val f: String => Int = _.length
val g: String => Int = _.toInt
// 调用lift组合后的函数,输入"123",计算3+123返回126
lift(op)(f, g)("123")

内容的提问来源于stack exchange,提问作者Tsubasa00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:24:06