【发布时间】:2017-11-07 11:32:49
【问题描述】:
我刚刚开始学习 Scala 中的高阶函数,我不明白这里的输出是如何出现的,根据文档 https://docs.scala-lang.org/tour/higher-order-functions.html,高阶函数是一个将函数作为参数或返回一个函数的函数功能。所以我的问题是,
- 如果在我程序的
multiplyBy2函数体中我的b=a(b分配给a),那么为什么f(a)是50(检查第1 行)和之后a 应为25(检查第 2 行)。 - 如果我在第 3 行中不提及
f:Int=>Any而不是仅提及f:Int,为什么会引发错误
我对工作流程感到困惑,我已经尝试过很多次了。如果有人通过描述该程序的整个工作流程来帮助我,我将不胜感激。谢谢。
package function
object HigherOrderFunction
{
def main(args: Array[String]):Unit =
{
functionExample(25, multiplyBy2)
}
def functionExample(a:Int, f:Int=>Any):Unit = //Line 3
{
println(f(a)) //Line 1
println(a) //Line 2
}
def multiplyBy2(b:Int):Int =
{
println(b) // Assigned a = b, So, a is 25 Now
b*2
// println(b) // Type Mismatch: Int, Required: Unit
}
}
输出
25
50
25
【问题讨论】:
标签: scala function higher-order-functions