博客
关于我
Scala -- 函数
阅读量:225 次
发布时间:2019-03-01

本文共 2685 字,大约阅读时间需要 8 分钟。

Scala 函数

代码示例

       

import java.time.LocalDateTime/**  * 1. object 中才能使用main函数  * 2. 函数中可以有函数  * 3. 函数不写等号 代表没有返回值 unit,  *    有等号但没指定类型那么最后一行是什么类型就返回什么类型  *    通过 :类型  指定返回值  *    可以使用return返回,使用return的时候必须指定返回值类型  * 4. 函数中的参数是val修饰的 不可变的  */object TestScalaFunction {   // main函数  def main(args: Array[String]): Unit = {    //1. 声明一个函数,接受int 类型的 a ,b 两个参数,返回值为int    def fun01(a: Int,b: Int) = {      // 最后一行是什么代表返回什么类型值(前提没指定返回类型)      a + b    }    println(fun01(23,3))    //2. 递归    def RecursionFun(num: Int): Int = {      if(num == 1) {        1      }else{        num + RecursionFun(num-1)      }    }    println(RecursionFun(10000))    // 3. 可变参数使用 *号;带有默认是的参数 使用 =号,例如 a:Int=10;    def fun02(a: Int*): Unit = {//      a.foreach(println)//      a.foreach(println(_))//      a.foreach(s => {print(s + "\t")})      for (elem <- a) {        print(elem + " \t")      }    }    fun02(12,12,23,34,34,343,34,45,45,56)    println()    // 4. 匿名函数    val fun03 = () => println("23232")    def fun04 = (str: String, str2: String) => {println(str + "-" + str2)}    fun03()    fun04("xiaoming","12")    println()    // 5. 偏应用函数    // localDateTime是java8中的时间,scala可以调用java中的类库    def log(date: LocalDateTime,name: String,log: String): Unit ={      println(date + " == : " + name +"操作了 "+log)    }//    让log函数变为一个偏应用函数 是用_ 表示这个参数需要填写    val logto = log(LocalDateTime.now(),_: String,_:String)    logto("小明","添加")    logto("小明","删除")    logto("小明","修改")    /**      * 高阶函数      */    //1. 参数为函数    def fun05(f01:(Int,Int) => Int,a:Int,b:Int,str:String): Unit = {      // 参数为function 直接能调用,具体实现由调用者实现      println(str + " 计算结果 = "+ f01(a,b) )    }    // 传入一个匿名函数,也可以声明一个函数传入    fun05((a,b)=>a+b,12,12,"小明")    //2. 返回值为函数    def fun06(a: Int,b: Int): () => String = {      if(a < b){        // 如果 a<0  实现一个函数        def f() = {            "a 小于 b"        }        // 返回这个函数        f      }else{        def f() = {          "a 大于 b"        }        f      }    }    println(fun06(-1,4)())    println(fun06(6,4)())    //3. 参数和返回值都包含函数    def fun07(f01:(Int,Int)=> Boolean,a:Int,b:Int): (String,String)=>String = {      var flag = f01(a,b)        if(flag){          def f(name1: String,name2: String):String ={            name1 + " 的分数大于 " + name2          }          f        }else {          def f(name1: String,name2: String):String ={            name1 + " 的分数小于 " + name2          }          f        }    }    println(fun07((a,b) => a > b,14,12)("小明","小红"))    //4. 特殊高阶函数(简化版 返回值是个函数 柯里化函数)    def fun08(f01:(Int,Int)=> Int,a:Int,b:Int)(int: Int) ={      f01(a,b) + int    }    def fun09(a: Int)(b: Int) ={       a+ b    }    println(fun08((a,b) => a - b,1,4)(10))    println((fun09(12)(23)))  }}

 

转载地址:http://obwt.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>