Scala函数

首页 » Spark » Scala函数
import java.util.Date

object fun {
  def main(args: Array[String]): Unit = {
    
    //函数
    def max(a:Int,b:Int)={
      if(a>b){
       a
      }else{
       b
      }
    }
    
    def max2(a:Int,b:Int) = if(a>b) a else b
      
      println(max(100,2))
    
    
    /*
     * 递归函数要指定函数的返回值类型
     */
    def fun(num:Int):Int ={
      if(num==1){
        1
      }else{
        num*fun(num-1)
      }
    }
    println(fun(3))
    
    
    
    /*
     * 参数有默认值的函数
     * 
     */
    def fun2(a:Int=3,b:Int=3)={
      a+b
    }
    println(fun2(2))
    
    
    
    
    /*
     * 可变长参数
     */
    def fun3(s:String*)={
      for(e<-s){
        println(e)
      }
    }
    fun3("d","g","r")
    
    
    /*
     * 匿名函数
     */
    //这是匿名函数
//		  ()=>{
//		    println("我是匿名函数")
//		  }
    //匿名函数调用
    val a=(a:Int)=>{
      println("我是匿名函数:"+a)
    }
    a(1)
    
    
    
    /*
     * 嵌套函数
     */
    def fun7(a:Int)={
      def fun8(b:Int):Int={
        if(b==1)
          1
        else
          b*fun8(b-1)
      }
      fun8(a)
    }
    println(fun7(5))
    
    
    
    /*
     * 偏应用函数
     */
    def showlog(date:Date,log:String)={
      println("date is "+date+",log is "+log)
    }
    val date=new  Date()
//		  showlog(date,"a")
//		  showlog(date,"b")
    //变化的用_
    val fun9=showlog(date:Date,_:String)
    fun9("a")
    fun9("b")
    
    
    /*
     * 高阶函数
     * 1、函数的参数是函数
     * 2、函数的返回是函数
     * 3、函数参数和返回都是函数
     */
    
    //函数的参数是函数
    def fun11(a:Int,b:Int):Int={
      a+b
    }
    def fun10(s:String,f:(Int,Int)=>Int)={
      val re=f(1,2)
      s+"_"+re
    }
    println(fun10("zhazhalong",fun11))
    
    //函数的返回是函数
    def fun12(a:Int,b:Int):(String,String)=>String={
      def fun13(s:String,s1:String)={
        s+"*"+s1
      }
      fun13
    }
    println(fun12(10,20)("s","g"))
    
    
    //函数的参数和返回都是函数
    def fun14(f:(Int,Int)=>Int):(String,String)=>String={
      def fun15(s1:String,s2:String):String={
        s1+"*"+s2
      }
      fun15
    }
    println(fun14(fun11)("a","b"))
    
    
    //柯里化函数
    def fun16(a:Int,b:Int)(c:Int,d:Int)={
      a+b+c+d
    }
    println(fun16(1,2)(2,4))
  }
}
分享到:
赞(0) 打赏

评论 7

评论前必须登录!

 

  1. #1

    最好再详细点

    hello8个月前 (03-27)
  2. #2

    以后多发点哦

    你好8个月前 (03-27)
  3. #3

    给你点赞

    hello8个月前 (03-27)
  4. #4

    以后多多交流

    中国加油小子8个月前 (03-28)
  5. #5

    看了那么多博客,就你的能看懂

    努力6个月前 (05-26)
  6. #6

    最好再详细点

    你哥6个月前 (05-26)
  7. #7

    笔记本6个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00