有件你会注意到的事情是,几乎所有的 Scala 的控制结构都会产生某个值。这是函数式语言所采
用的方式,程序被看成是计算值的活动,因此程序的控件也应当这么做。你也可以把这种方式看
做早已存在于指令式语言中的一种趋势(函数调用返回值,被调用函数更新被当作参数传入的输
出变量也归于此类)的逻辑推演。另外,指令式语言经常具有三元操作符(如 C,C++和 Java
的 ?: 操作符),表现得就像 if ,却产生值。 Scala 采用了这种三元操作符模型,但是把它称为 if 。
换句话说, Scala 的 if 可以产生值。于是 Scala 持续了这种趋势让 for , try 和 match 也产生值。

使用 val 而不是 var 的第二点好处是他能更好地支持等效推论:equational reasoning。在表达式
没有副作用的前提下,引入的变量等效于计算它的表达式。因此,无论何时都可以用表达式替代
变量名。如,要替代 println(filename) ,你可以这么写:
println(if (!args.isEmpty) args(0) else "default.txt")
选择权在你。怎么写都行。使用 val 可以帮你安全地执行这类重构以不断革新你的代码。

Scala编程 摘录的更多相关文章

  1. Scala 编程(一)Scala 编程总览

    Scala 简介 Scala 属于“可伸展语言”,源于它可以随使用者的需求而改变和成长.Scala 可以应用在很大范围的编程任务上,小到脚本大到建立系统均可以. Scala 跑在标准 Java 平台上 ...

  2. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  3. c专家编程摘录

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  4. Scala编程进阶

    跳出循环语句的3种方法... 2 多维数组... 3 Java数组与Scala数组缓冲的隐式转换... 3 Java Map与Scala Map的隐式转换... 3 Tuple拉链操作... 4 内部 ...

  5. Scala编程基础

    Scala与Java的关系... 4 安装Scala. 4 Scala解释器的使用... 4 声明变量... 5 数据类型与操作符... 5 函数调用与apply()函数... 5 if表达式... ...

  6. Scala编程实例:使用List和Tuple

    本文节选自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻译的<Programming in Scala>的第三章.Scala是一种针对 J ...

  7. restapi(3)- MongoDBEngine : MongoDB Scala编程工具库

    最近刚好有同事在学习MongoDB,我们讨论过MongoDB应该置于服务器端然后通过web-service为客户端提供数据的上传下载服务.我们可以用上节讨论的respapi框架来实现针对MongoDB ...

  8. 03.Scala编程实战

    Scala编程实战 1.    课程目标 1.1.  目标:使用Akka实现一个简易版的spark通信框架 2.    项目概述 2.1.   需求 Hivesql----------> sel ...

  9. Scala编程 笔记

    date: 2019-08-07 11:15:00 updated: 2019-11-25 20:00:00 Scala编程 笔记 1. makeRDD 和 parallelize 生成 RDD de ...

随机推荐

  1. ThreadPoolExecutor 几个疑惑与解答

    任务是否都要先放入队列? 当工作线程数小于核心线程数时,任务是不会经过队列,而是直接创建 Worker 时传入.但是如果工作线程数已经大于核心线程数,则任务是要先放入队列的.实际上只要是被创建的工作线 ...

  2. 锋利的jQuery初学(5)

    层级选择器: 层级选择器 符号 解释 使用 空格 后代选择器 $("div p").css("","") + 紧邻选择器 $("d ...

  3. 小妖精的完美游戏教室——东方PROJECT,同人,符卡系统

    //================================================================//// Copyright (C) 东方同人社// All Rig ...

  4. linux磁盘分区笔记

    磁盘基本概念: 硬盘结构:盘片+磁头(盘片可以有多个),工作时盘片高速运转,磁头读取数据 U盘.SSD固态硬盘是用闪存来制作的设备,没有盘片和磁头 Linux磁盘文件名: Linux所有设备都抽象为文 ...

  5. centos安装实用总结

    1.常用软件安装: yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop ...

  6. Node.Js http服务(websocket)

    安装node,下载地址 https://nodejs.org/en/ cmd 中 输入 node -v 安装成功可以查看版本 cmd 中 ctrl - c 可以 结束 和 启动 编辑 js 文本 va ...

  7. Unity安卓打包遇到的问题。

    1, android asset packinging tool failed. "路径" package -v -f -F assets.ap_ - Assets found X ...

  8. Python基础:九、运算符

    一.赋值运算 简单的赋值运算符号:= c = a + b #将a+b的元算结果赋值给c 加法赋值运算符:+= c += a #等效于 c = c + a 减法赋值运算符:-= c -= a #等效于 ...

  9. 简单git使用命令

    // 查看分支:git branch // 创建分支:git branch <name> // 切换分支:git checkout <name> // 创建+切换分支:git ...

  10. postman测试请求参数中文乱码问题

    用IDEA调试代码时,用postman测试请求url,发现post或者get请求中参数是中文的话,后台获取的参数是乱码, 一般两个方面 发送请求的一方:postman的问题 接受请求的一方:tomca ...