【发布时间】:2025-12-21 11:45:07
【问题描述】:
val x = (x:Int, y:Int) => (_:Int) + (_:Int)val y = (_:Int) + (_:Int)
在 Scala 中的上述两个函数文字中,当我调用第一个(例如: x(2,3) )时,它不会返回总和。相反,它返回另一个结果,比如 res0。当我调用 res0(2,3) 时,它会返回总和。而第二个则在第一次调用中返回答案(例如:y(2,3) 给我 5)。
有人能解释一下为什么第一个调用本身没有返回总和(即 5)吗?
我在 REPL 中尝试过。
【问题讨论】:
-
提示 #1:
foo => bar是一个接收foo并返回bar的函数。提示 #2:_ + _是一个函数,它接受两个参数并返回它们的总和(它基本上是(x, y) => x + y的语法糖,这意味着每当您看到_ + _时,您都可以在心理上将其替换为(x, y) => x + y)。提示#3:将#1 和#2 放在一起,那么逻辑上foo => _ + _是什么?