引用透明

  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) }

。。。

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

最新文章

  1. Rocksdb引擎记录格式
  2. JAVA_Java常用核心包(概念)
  3. java 开发常用的Linux命令
  4. java 选择排序法
  5. 快速开始使用Graph-tool - gt文件格式
  6. 【转】Win7、Ubuntu双系统正确卸载Ubuntu系统--不错
  7. 【Demo 0004】Java基础-类封装性
  8. SCU 3133(博弈)
  9. 明天opp¥this xuexi 资料在高中一班
  10. AndroidStudio 集成litepal 报错
  11. j2EE经典面试题
  12. 【转】Socket接收字节缓冲区
  13. 鼠标事件event和坐标
  14. ORA-12805: parallel query server died unexpectedly ORA-04030 (sort subheap,sort key) 原因排查与解决方法
  15. Visual Studio下运行PowerShell脚本自增小版本号并发布到Nuget服务器上
  16. 使用Ubuntu的Crontab定时任务需要注意的地方
  17. Python学习笔记_04:Django框架简介
  18. [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)
  19. scala中“_”的用法
  20. Python 中的线程-进程1

热门文章

  1. Ceph日常运维管理和排错 -- <7>
  2. 2020 年了,Java 日志框架到底哪个性能好?——技术选型篇
  3. 那些不懂hystrix的秘密
  4. 小程序的<label>标签
  5. OpenGL ES for Android
  6. VMware Workstation CentOS7 Linux 学习之路(2)--.net core环境安装
  7. python 快速创建字典 fromkes()
  8. latex之在windows环境下能够在latex中使用中文
  9. vuex 基本语法
  10. 异想家Win10常用的软件推荐