Scala 学习(9)之「函数式编程」

引用透明

  1. 对相同的输入,总是能得到相同的输出。
  2. 如果 f(x) 的参数 x 和函数体都是引用透明的,那么函数 f 是纯函数。

违反引用透明的例子

在这里插入图片描述
我们可以很清楚的看到,对于相同的输入,第二次调用append()和第一次调用append()时候的输出结果是不同的。

纯函数(函数的纯粹性)

指的是没有副作用的函数

副作用

指的是状态的变化:

  1. 修改全局变量
  2. 抛出异常
  3. IO 读写
  4. 调用有副作用的函数

副作用的例子

var x = 1
def xpulsy_v1(y: Int) = x + y
def xpulsy_v2(y: Int) = {x += y; x}

x
xpulsy_v1(2)
x

xpulsy_v2(2)
x

在这里插入图片描述
我们可以清楚的看到,调用xplusy_v2函数的时候,改变了 x 的值,产生了副作用。

函数式编程的优点

  1. 生产效率高
  2. 易于推理
  3. 并行编程

将函数赋值给变量

Scala 的语法规定,将函数赋值给变量时,必须在函数后面加上空格下划线

def sayHello(name: String) { println("Hello, " + name) }

。。。

扫码查看历史消息,可获得完整版文章

在这里插入图片描述

posted @ 2020-02-16 22:40  0的幂方  阅读(...)  评论(...编辑  收藏