- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
目 录
概述
从语句到表达式
纯函数和非纯函数
惰性求值/Call by name
Tuple/case class/模式匹配
用 option 代替 null
用Try类保存异常
函数是一等公民
关于性能
推荐资源
本文档使用 看云 构建 - 2 -
概述
概述
原文出处 :http///a/1190000003068853
作者 :笋干太咸
新手向,面向刚从java过渡到scala的同学,目的是写出已已易于维护和阅读的代码.
本文档使用 看云 构建 - 3 -
从语句到表达式
从语句到表达式
语句(statement) 一段可执行的代码
表达式(expression) 一段可以被求值的代码
在Java中语句和表达式是有区分的,表达式必须在return或者等号右侧,而在scala中,一切都是
表达式.
一个例子
假设我们在公司的内网和外网要从不同的域名访问一样的机器
//Java代码
String urlString null;
String hostName InetAddress.getLocalHost().getHostName();
if (isInnerHost(hostName)) {
urlString http://inner.host;
} else {
urlString http://outter.host;
}
刚转到scala的人很可能这么写
var urlString: String null
var hostName InetAddress.getLocalHost.getHostName
if (isInnerHost(hostName)) {
urlString http://inner.host
} else {
urlString http://outter.host
}
我们让它更像scala一点吧
val hostName InetAddress.getLocalHost.getHostName
val urlString if (isInnerHost(hostName)) {
http://inner.host
} else {
http://outter.host
}
这样做的好处都有啥?
本文档使用 看云 构建 - 4 -
从语句到表达式
1. 代码简练,符合直觉
2. urlString 是值而不是变量,有效防止 urlString 在后续的代码中被更改(编译时排错)
很多时候,我们编程时说的安全并不是指怕被黑客破坏掉,而是预防自己因为逗比而让程序崩
了.
本文档使用 看云 构建 - 5 -
纯函数和非纯函数
纯函数和非纯函数
纯函数 (Pure Function )是这样一种函数——输入输出数据流全是显式 (Explicit )的。
显式 (Explicit )的意思是 ,函数与外界交换数据只有一个唯一渠道——参数和返回值 ;函数
从函数外部接受的所有输入信息都通过参数传递到该函数内部 ;函数输出到函数外部的所有
信息都通过返回值传递到该函数外部。
如果一个函数通过隐式 (Implicit )方式 ,从外界获取数据 ,或者向外部输出数据 ,那么 ,该
函数就不是纯函数 ,叫作非纯函数 (Impure Function )。
隐式 (Implicit )的意思是 ,函数通过参数和返回值以外的渠道 ,和外界进行数据交换。比
如 ,读取全局变量 ,修改全局变量 ,都叫作以隐式的方式和外界进行数据交换 ;比如 ,利用
I/O API (输入输出系统函数库 )读取配置文件 ,或者输出到文件 ,打印到屏幕 ,都叫做隐式
的方式
1亿VIP精品文档
相关文档
知传链电子书
最近下载
- 哈尔滨市投资促进局招考政府雇员制工作人员考前自测高频考点模拟试题(共500题)含答案详解.docx VIP
- 汽轮机辅机检修(第二版)技师题库.doc
- 汽车4S店行政人事管理制度.doc
- 2022年第四届全国大学生语言文字能力大赛 历届真题题库 答案.docx VIP
- 特深地下连续墙施工及废弃泥浆处理PPT课件.ppt
- 图解2024年党纪学习教育:组织纪律党课专题.ppt VIP
- 《民法典》物权编.pdf VIP
- 广东省医药公司目录.docx VIP
- 《DLT 2041-2019分布式电源接入电网承载力评估导则》贯标培训资料.pptx
- Premiere视频编辑案例教程 课件 5 调色、叠加与抠像.ppt
文档评论(0)