Scala函数式编程高级(上)
一、作为值的函数
- 在Scala中,函数是"头等公民",就和数字一样,你可以在变量中存放函数。
import scala.math._ val num = 3.14 val fun = ceil _ //注意有个下划线_ 这段代码将num设为3.14,将fun设为ceil函数。 你能对函数这什么呢? 两件事: 1. 调用这个函数。 2. 传递这个函数,存放在变量中,或者作为一个参数传递给另一个函数。 调用函数 fun(num) 普通的函数语法调,唯一的区别是: fun是一个包含函数的变量,而不是一个固定的函数。 传递函数 Array(1.5, 2,5, 3.0).map(fun) map接受一个函数,然后应用到数组中的所有值,然后返回结果的数组
二、函数字面量
1.字面量
- Scala所有的基础类型都可以用字面量来书写,字面量是在代码中直接写入常量值的一种方式。
1.整数字面量:用于 Int Long Short Byte 的整数字面量有两种形式:十进制的 与 十六进制的 val hex1 = 0x5 Ox5就是整数字面量 val hex2 = 5 5 就是字面量 整数字面量以L或者l 就是Long型的。 val hex3 = 35L 2.浮点数字面量: 由十进制的数字、可选的小数点,以及后续一个可选的e或E 打头的指数( exponent )组成 val big = 1.2345 1.2345 就是字面量 val big1 = 1.245E1 1.245E1 = 12.345 如果浮点数字面 结尾,那它就是Float 型的; 否则它就是 Double。 val little = 1.2345F 1.2345就是字面量 同时是Float类型的字面量。 3.字符字面量: 由一对单引号和中间的任意 Unicode 字符组成。 val a = 'A' 'A' 就是字面量。 4. 字符串字面量:双引号包起来的字符组成 val hello = "hello" 5. 布尔值字面量 : 只有两个字面量 true 和 false val bool = true
2.函数字面量(匿名函数)
-
Scala不定可以定义函数并调用它们,还可以用匿名的字面量来编写函数,并将它们作为值进行传递。