- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Scala中的函数式特征与并发
Scala 中的函数式特征
ADC 2013
关于我
• 王宏江,花名:宏江
• Blog:hp://
• 经历:
– Java : 10y+
– Scala : 2y+
– 十年工作经验,2009年加入阿里,曾在阿里巴巴中
文站和担任架构师,现在中间件稳定
性平台部门
– Scala布道者
– 业余马拉松爱好者
说明
• 内容
1) Scala 中的函数式的特征
2) Scala类型系统中的函数式特征
• 交流:hps:///CSUG/csug/
• 旺旺群:
Scala交流和答疑:sugsug
函数式语言
纯函数式语言 非纯函数式语言
静态类型 动态类型
Haskell Miranda Clean
ML OCaml Scala F# Lisp Scheme Erlang
关于Scala语言
面向对象与函数式被看成一个硬币的两面,Scala试图将这两⾯融合起来
怎么理解这两种风格?
命令式与函数式
在 《程序设计语言—实践之路》一书中
将“面向对象”与“面向过程”都归类为“命令式”语
言
命令式与函数式
命令式与函数式
• 图灵机/冯诺依曼体系
– 其运算可看做:
– 通过修改内存来反映运算的结果。
– (用命令修改状态)
• Lambda演算(λ calculus)形式
– 连续运算(基于函数)得到结果
• 函数式程序是跟值打交道的,而不是跟状
态打交道的。它们的工具是表达式,而不
是命令。
— 《ML for the Working Programmer》
值 vs 状态
副作用(side effect)
Scala 的做法
• 同时支持val和var体现了scala的“平衡”也可
以说是“圆滑”
• 鼓励使用val ,但并不排斥var ;实际编码中
val 占大多数。
函数式是面向表达式的
Scala 中的表达式
• 1) 所有的表达式都有值
• 2) 除了赋值和函数调用表达式,内置的几个
表达式只有:if,while,for,try,match
• 3) 块表达式{…}是基本表达式的组合,它的值
是最后一个表达式的值。
Scala 中的表达式
• 一些表达式的值:
1) a=1;
2) while(a100){print(a)}
3) if(a2) 1;
• 赋值表达式、while表达式的值是Unit类型,它的值
是唯一的: ()
• if表达式缺乏else的话,不符合条件则返回Unit类
型的();即上面相当于:if(a2) 1 else ()
赋值语句的注意点:
不同于java :
1)while( (line = readLine() ) != null )
不起作用,前边的 line = readLine() 得到的是Unit
类型值
2 )x=y=1; // y=1; x=()
y=1表达式的结果是()
您可能关注的文档
最近下载
- 2022年北京市十二中初三(上)期中数学试卷及答案.pdf VIP
- 鲁教版初中九年级化学各章节知识点归纳复习提纲.doc
- 海鲜市场项目可行性研究幻灯片.pptx VIP
- 微电网能量管理:技术、策略与发展路径探究.docx VIP
- 某污水处理工艺设备安装施工方案.docx VIP
- 理智与情感:爱情的心理文化之旅 智慧树网课章节测试答案.docx VIP
- 03.1 20CS03-1 一体化预制泵站选用与安装(一).docx VIP
- 2025年公司组织架构图及各部门职能要求模板参考(架构图可编辑).pdf VIP
- 级配碎石施工技术课件.ppt VIP
- 神话传说故事与中国文化 智慧树 知到答案.docx VIP
文档评论(0)