【发布时间】:2017-07-17 14:34:13
【问题描述】:
我刚开始学习 Scala,在这个 Scala 程序中,答案是 75。为什么?为什么 25 与 3 相乘?我无法理解“println(fun(a))”部分
object MainObject
{
def main(args: Array[String]) =
{
functionExample(25, bhaskar) // Passing a function as parameter
}
def functionExample(a:Int, fun:Int=>AnyVal):Unit=
{
println(fun(a)) // 75
}
def bhaskar(b:Int):Int =
{
b*3
}
}
【问题讨论】:
-
fun:Int=>AnyVal 是方法 functionExample 的参数。在 main 中,您调用 functionExample 并将 fun 参数作为 bhaskar。所以 println(fun(a)) 行打印了 fun(a) 的结果。 a 是 25 岁,有趣的是 bhaskar。 bhaskar 返回 a*3。
-
好的,谢谢!但是 bhaskar 如何返回 a*3?它返回 b*3。不能后悔
-
bhaskar 接受一个参数 b,它是一个 int。在 functionExample 中调用它时,将 a 作为参数传递。所以 b=a,然后返回 b*3。
-
是的!谢谢!知道了! :)
标签: scala higher-order-functions