Scala方法和函数

/**

* 6.嵌套方法

*/

def fun(num:Int) :Int = {

def fun (a:Int) :Int = {

          if(a==1)[

             1

          }else{

              a*fun1(a-1)

          }

    }

   fun1(num)

}

printIn(fun(5))

 

/**

* 7.偏应用函数

*某些情况下,方法中参数非常多,调用这个方法非常频繁,每次调用只有固定的某个参数变化,其他都不变,可以定义偏应用来实现

*/

def showLog(data :Data,log:String):Unit ={

     printIn(sdata is $data , log is $log)

}

val data = new Data ()

showLog(data,log=a)

showLog(data,log=b)

showLog(data,log=c)

 

可用偏应用来替代:

def fun:String =>Unit = showLog(data,_:String)

fun(aaa)

fun(bbb)

fun(ccc)

 

/**

* 8.高阶函数

* 1).方法的参数是函数

* 2).方法的返回是函数

* 3).方法的参数和返回都是函数

*/

// 方法的参数是函数

def fun(a:Int,b:Int) :Int = {

        a+b

}

def fun1(f:Int,Int)=>Int,s:String):String = {

      val i :Int = f(100,200)

      I+”#”+s

}

val result = fun1(fun,”scala”)

printIn(result)

 

//方法的返回是函数

def fun(s:String) : (String, String)=>String = {

    def funl (s1:String, s2:String): String={

         sl+”*” +s2+” #” +s

}

fun1

}

println(fun("a")("b", "c" ))

 

//法的参数和返回都是函数

def fun(f: (Int, Int)=>Int): (String, String)=>String = {

    val i: Int = f(1,2)

    def funl (sl:String, s2:String):String = {

       s1+”0” +s2+"* +i

     }

     funl

}

printIn(fun(a, b)=> {a+b})("hello", "world ”)

 

/**

* 9.柯里化函数

def fun(a:Int, b:Int) (c:Int, d:Int) :Int ={

    a+b+c+d

}

printIn(fun(1,2)(3, 4))

posted @ 2022-05-16 00:12  迟'  阅读(31)  评论(0)    收藏  举报