高阶函数(Higher-order Functions)
Scala 的控制抽象是根据高阶函数来进行的。
高阶函数
就是接受函数作为参数的函数。高阶函数给你额外的机会来精简代码
1.高阶函数能够使你创建控制抽象来减少代码重复
2.高阶函数能够使得API更加的简洁
柯里化(Currying)
柯里化是函数编程的一种技术。柯里化就是将一个含有单参数列表(single arguments list)的函数转化为一个含有多参数列表(multiple argument lists)的函数
传名参数(By-name parameters)
写法如下
def func(v: => Boolean)
第一,可以理解为省略空参列表的简写方式
// 如果不使用传名参数的写法
def func(v: String => Boolean) = println(v)
func(() => 1 > 2)
// 如果使用传名参数的写法
def func(v: => Boolean) = println(v)
func(1 > 2)
// 可以传入表达式,也可以传入字面量
第二,可以将传名参数类比为延迟计算(Lazy calculation),可以带来性能上的提升
var assertionsEnabled = false
def myAssert(predicate: () => Boolean) =
if (assertionsEnabled && !predicate())
throw new AssertionError
myAssert(1 / 0 == 0)
// 上面的语句是不会抛出异常的,因为是延迟计算
网友评论