Scala函数

2020-03-10 157次浏览 已收录 7个评论
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))
  }
}

渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Scala函数
喜欢 (0)

您必须 登录 才能发表评论!

(7)个小伙伴在吐槽
  1. 最好再详细点
    hello2020-03-27 12:46
  2. 以后多发点哦
    你好2020-03-27 13:37
  3. 给你点赞
    hello2020-03-27 14:03
  4. 以后多多交流
    中国加油小子2020-03-28 16:26
  5. 看了那么多博客,就你的能看懂
    努力2020-05-26 09:28
  6. 最好再详细点
    你哥2020-05-26 09:54
  7. 笔记本2020-05-26 10:45