2017-07-17 52 views
-5

我刚刚学习Scala,在这个Scala程序中,答案是75.为什么?为什么25与3相乘?我无法理解那部分 “的println(乐趣(一))”这里的答案是75.那么,为什么25在这个Scala程序中乘以3?

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 

     } 
    } 
+0

fun:Int => AnyVal是方法functionExample的一个参数。主要你调用functionExample和fun参数作为bhaskar。所以println(fun(a))这一行输出fun(a)的结果。 a是25,乐趣是bhaskar。 bhaskar返回* 3。 – matt

+0

好的谢谢!但bhaskar如何返回* 3?它返回b * 3。不能抱歉 –

+0

bhaskar需要一个参数,b,这是一个int。在functionExample中调用它时,会将a作为参数传递。所以b = a,则返回b * 3。 – matt

回答

2

println(fun(a))打印调用fun(a)的结果。当您拨打functionExample(25, bhaskar)时,您通过25作为abhaskar作为funbhaskar需要Int并返回乘以3

因此,致电bhaskar(25)的结果是75。由于funbhaskara25fun(a)结果在75

+0

非常感谢! 但bhaskar如何采取Int 25?因为25是第一个参数,bhaskar是第二个参数。在bhaskar(b:Int)的实现部分中,这里b是一个从未在 –

+0

之前使用的变量,因为当你调用你在25中传递的函数,并且bhaskar变得有趣时。那么有趣(a)和bhaskar(25)一样。 bhaskar在输入值中乘以3并返回结果。 b是bhaskar参数的名称,它是本地的方法。 – puhlen

+0

是的。得到它了。谢谢! –