Scala的控制抽象

2018-03-12  本文已影响0人  Grits

高阶函数(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)
// 上面的语句是不会抛出异常的,因为是延迟计算
上一篇 下一篇

猜你喜欢

热点阅读