scala 从入门到入门 .pdf

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 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 (输入输出系统函数库 )读取配置文件 ,或者输出到文件 ,打印到屏幕 ,都叫做隐式 的方式

文档评论(0)

max + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档