Scala部分:Scala中的函数(包含主函数,函数的调用,函数的匹配,函数返回类型的设定,函数的递归,嵌套函数,偏应用函数【难】,高阶函数【难】,柯里化函数)

package com.bjsxt.scala

import java.util.Date

object fun {
  /**
   * 方法的定义
   * 定义方法用def
   */
  def main (args:Array[String]): Unit={
    /**
     * 主函数必须用unit
     * 其他的函数中,返回值类型可加也可以不用加
     */
    def max(x:Int,y:Int):Int={
      if(x>y){
        return x
      }else{
        return y
      }
    }
    println(max(100,10))
    println("++++++++++++++++++++")
    def max1(x:Int,y:Int):Int=  if(x>y) return x  else    return y ;println(max1(100,10))
    println("-----------------------------------")
    /**
     * 不加等号,返回值为空
     * 加上等号,不为空
     */
    def fun(a:String){
     "dfsafdsf---->"+a
    }
    println(fun("sds"))
    println("+++++++++++++++++++++++++++++++")
        def fun1(b:String)={
      "wangyongqiang"+b
    }
    println(fun1("wangyongqiang"))
    println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    /**
     * 递归方法的学习
     */
    def fun2(s:Int):Int={
      if(s==1){
        1
      }else{
        s*fun2(s-1)
      }
    }
    print(fun2(5))
    println("_________________________________________")
    def fun3(e:Int=100,f:Int=200):Int={
      e+f
    }
    println(fun3(10))
    /**
     * 有参数与无参数的区别:
     * 无参数的方法:方法后边,等号前边要加上方法的类型:Int,String等
     * 有参数的方法:等候前边可以不用加类型
     * 
     */
    /**
     * 可变长参数的方法
     */
    def fun4(ss:String*)={
      ss.foreach(s=>{
        println(s)        
      })
    }
  fun4("a","b","c","d")
  println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
  /**
   * 加不加括号都一样
   */
   def fun5(ss:String*)={
      ss.foreach((s)=>{
        println(s)        
      })
    }
  fun5("a","b","c","d")
  /**
   * 匿名函数
   */
  println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
  val funn=(s:String)=>{
    println(s)
  }
  /**
   * 嵌套函数
   */
  def fun6(num:Int):Int={
    def fun1(a:Int):Int={
      if(a==1){
        a
      }else{
        a*fun1(a-1)
      }
    }
    fun1(num)
  }
  println(fun6(10))
  println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
  /**
   * 偏应用函数
   */
  def showLog(date:Date,log:String)={
    println("data is"+date+",log is "+log)
  }
  val date1=new Date()
  showLog(date1,"a")
  showLog(date1,"b")
  showLog(date1,"c")
  val fun7=showLog(date1:Date,_:String)
  fun7("aaa")
  fun7("bbb")
  fun7("ccc")
  /**
   * 8.高阶函数
   * 1)函数的参数是函数
   * 2).函数的返回值是函数
   * 3).函数的参数和返回值都是函数
   */
  //函数的参数是函数
  def fun8(f:(Int,Int)=>String,x:Int):String={
    val result=f(100,200)
    result+"@"+x
  }
  val result=fun8((a:Int,b:Int)=>{
    a+"~"+b
  },100)
  
  println(result)
  /**
   * 函数的返回值是函数,需要显示声明方法的返回值类型是函数
   */
  def fun9(a:Int,b:Int):(Int,Int)=>Int={
    val result=a+b//result=3
    def funy(x:Int,y:Int):Int={
      x+y+result
    }
    funy
  }
  println(fun9(1,2)(100,200))
  //函数的参数和返回值都是函数
  def fun10(f:(Int,Int)=>Int):(String,String)=>String={
    val result=f(1,2)
    def fun1(s1:String,s2:String):String={
      s1+"~"+s2+"@"+result
    }
    fun1    
  }
  println(fun10((a:Int,b:Int)=>{a+b})("hello","world"))
    
    /**
     * 9.柯里化函数
     * 高阶函数
     */
    def fun11(a:Int,b:Int)(c:Int,d:Int)={
    a+b+c+d
  }
  println(fun11(1,2)(3,4))
    
  
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值