Scala基础—函数式编程示例
来源:互联网 发布:北师大网络教育学费 编辑:程序博客网 时间:2024/05/20 00:39
package com.spark.scala.basics/** * 1.在scala中,函数式一等公民,可以像变量一样被传递,被赋值,同时函数可以赋值给变量,变量也可以赋值给函数; * 原因在于:函数背后是类和对象,在运行的时候,函数其实是一个变量,这背后的类是scala自动生成,且可以天然地被序列化和反序列化。 * 意义: * 1)序列化和反序列化,函数可以在分布式系统上传递; * 2)可以和普通的变量一样完全,用在普通变量可以用在的地方,比如:参数,返回值等 * * 2.def关键字来定义函数 * 3.函数会自动类型推断来确定函数返回值的类型,*****注意:函数名称和函数体之间没有等于号的话,则类型推断失效,此时函数的类型是Unit * 4.函数的的参数可以是函数 * 5.如果函数体中无法推导出函数的类型,则必须声明具体的类型 * 6.可以指定函数的参数名,如 hello(age = 25, name="Scala"),原因在于函数背后其实是类,其参数就是类的成员,所以顺序啥的无所谓! * 7.函数可变参数,如sum()函数,传参时语法是:_* * 8.可变参数中的数据其实会被收集成为Array数据,我们在入口方法main中其实就是可变参数,是以Array[String]的方式呈现的 */object HelloFunctionProgramming { def main(args:Array[String]): Unit = { hello("Scala", 25) println(hello("Scala", 25)) //函数作为参数 hello(age = 25, name="Scala") println("sum = " + sum(1,2,3,4,5,6)) println("sum = " + sum(1 to 6: _*)) //调用可变参数 } def hello(name: String, age: Int = 25): Int = { // 默认参数 println("Hello, My name is " + name + "! My age is " + age + "!") age } def sum(numbers: Int*) = { // 函数可变参数 var result = 0 for (number <- numbers) result += number result }}
/** * Functional style: * * 1.函数和变量一样,函数可以直接赋值给变量 * 2.匿名函数 * 3.函数作为参数,传递给函数,称为高阶函数 * 4.函数的返回值是函数,此时,实现了闭包的功能(closure) * closure的原理;参数都是对象的成员,所以可以一直访问 */object FunctionalProgramming { def main(args: Array[String]): Unit = { val hiData = bigData _// hiData("Scala") val f = (name: String) => println("Hi, " + name)// f("Kafka") def getName(func: String => Unit, name: String): Unit = { func(name) }// getName(f, "Scala")// Array(1 to 10: _*).map{ (item: Int) => 2 * item}.foreach(println(_)) def funcResult(message: String) = (name: String) => println(message + name) //def funcResult(message: String, name: String) {println(message + " : " + name)} funcResult("Hello ")("Java")//currying函数的写法 val result = funcResult("Hello ") result("Java") } def bigData(name: String): Unit = { println("Helllo " + name) }}
阅读全文
0 0
- Scala基础—函数式编程示例
- Scala基础—集合函数式编程示例(占位符的使用示例)
- Scala基础—函数式编程高阶示例,闭包、Currying等
- Scala基础—面向对象编程示例
- Scala基础—implicit编程示例
- Scala基础—并发编程示例
- Scala基础—偏函数的示例
- scala函数式编程使用示例
- scala集合函数式编程使用示例
- Scala 中的函数式编程基础
- Spark基础-Scala函数式编程
- Spark基础-Scala集合函数式编程
- Scala基础—*类型参数编程实战示例
- Scala基础—多线程示例
- Scala 函数式编程
- Scala函数式编程
- Scala函数式编程
- Scala 函数式编程
- Zookeeper实例Curator API-EnsurePath使用
- 独立看门狗IWDG
- XML和HTML
- spark序列化溢出
- iOS学习笔记之判断tableview向上还是向下滑动!
- Scala基础—函数式编程示例
- Leetcode 600. Non-negative Integers without Consecutive Ones
- html中常用的标签
- Spring boot 数据源未配置异常
- 大数据Hadoop学习六
- 关于登陆的配置问题总结
- 排序——插入排序
- SolrCloud基础认识
- spring4 hibernate5配置 getHibernateFlushMode is not valid without active transaction