zoukankan      html  css  js  c++  java
  • Scala 高阶函数 匿名函数

    一步一步理解Scala高阶函数:

    第一步:

       Scala函数可以作为值,传递给另外一个变量,或者另外一个函数

       语法特征: 必须要在函数后面加上空格和下划线

    object FunctionOps1 {
      def main(args: Array[String]): Unit = {
        //作为值得函数
        val sayBye = sayGoodBye _  //函数传递给变量空格和下划线
        def say = sayGoodBye _ //函数传递给函数空格和下划线  
        sayGoodBye("zhangsan")
        sayBye("KPWong")
        say("laoli")
    
      }
    
      /**
       *   函数可以作为值,传递给另外一个变量,或者另外一个函数
       *    语法特征: 必须要在函数后面加上空格和下划线
       */
      def sayGoodBye(name:String) : Unit = {
        println("Good bye to " + name)
      }
    
    }

    第二步:匿名函数:

    匿名函数:就是没有名字的函数

    Scala 中定义一个完整函数:

       def functionName(Params):returnType = {body}

    Scala中定义匿名函数:

       (Params) => returnType //匿名函数定义

      (Params) => {body} //匿名函数实现

    问题:
    该匿名函数如何被调用
    解决方案:
    将匿名函数赋值给一个变量或者函数
      val sayAnonymousVal = (name:String) => { println("Good bye to " + name)  }  //匿名函数赋值给变量
      def sayAnonymousFun = (name:String) => { println("Good bye to " + name)  } //匿名函数赋值给函数
    object FunctionOps1 {
      def main(args: Array[String]): Unit = {
        //作为值得函数
        val sayBye = sayGoodBye _  //函数传递给变量
        def say = sayGoodBye _ //函数传递给函数
        sayGoodBye("zhangsan")
        sayBye("KPWong")
        say("laoli")
    
        sayAnonymousVal("laozhao")
        sayAnonymousFun("lao Fang")
      }
    
      /**
       *   函数可以作为值,传递给另外一个变量,或者另外一个函数
       *    语法特征: 必须要在函数后面加上空格或者下划线
       */
    
    
      def sayGoodBye(name:String) : Unit = {
        println("Good bye to " + name)
      }
    
      //匿名函数:就是没有名字的函数
      /**
       * Scala 中定义一个完整函数:
       *    def functionName(Params):returnType = {body}
       * Scala中定义匿名函数:
       *  (Params) => returnType  //匿名函数定义
       *  (Params) => {body}      //匿名函数实现
       *  问题:
       *     该匿名函数如何被调用
       *  解决方案:
       *     将匿名函数赋值给一个变量或者函数
       */
    
     val sayAnonymousVal = (name:String) => { println("Good bye to " + name)  }  //匿名函数赋值给变量
      def sayAnonymousFun = (name:String) => { println("Good bye to " + name)  } //匿名函数赋值给函数
      //    def sayGoodBye(name:String) : Unit = {
    //      println("Good bye to " + name)
    //    }
    
    
    }

     第三步: 高阶函数:带函数参数的函数,一个函数的参数是函数,这种函数称为高阶函数

      def HigheLevelFunction(name:String,func:(String) => Unit) :Unit = {
         func(name)
      }  

    使用高阶函数:

        HigheLevelFunction("LaoGao1",sayAnonymousVal)
        HigheLevelFunction("LaoGao2",(name:String) =>sayAnonymousVal(name))
        HigheLevelFunction("LaoGao3",(name:String) =>sayGoodBye(name))
        HigheLevelFunction("LaoGaoAnonymous1",(name:String) =>{println(name)})  //更多情况下使用这一的匿名函数
        //如果只有一个参数,可以省略掉()
        HigheLevelFunction("LaoGaoAnonymous2",name=>println(name))  //更多情况下使用这一的匿名函数
        //可以用通配符"_" 代替一个变量
        HigheLevelFunction("LaoGaoAnonymous3",{println(_)})
        //最简单的写法,通配符都可以省略
        HigheLevelFunction("LaoGaoAnonymous4",println)
    

      

     
     
  • 相关阅读:
    IDEA设置显示行号和方法间的分隔符
    IDEA设置自动导包功能
    IDEA设置设置鼠标滚轮修改字体大小
    CA数字证书部署
    mysql数据库基础
    部署集群基础环境,MySQL-MMM架构部署,MySQL-MMM架构使用
    使用binlog日志, XtraBackup备份工具 ,MySQL AB复制
    实现MySQL读写分离,MySQL性能调优
    密码恢复及设置,用户授权及撤销,MySQL管理工具
    SQL数据导入/导出,操作表记录,查询及匹配条件
  • 原文地址:https://www.cnblogs.com/kpwong/p/14148333.html
Copyright © 2011-2022 走看看