有件你会注意到的事情是,几乎所有的 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. 如何在Linux上设置SSH密码以进行无密码登录(转)

    ssh(secure shell)广泛用于远程登录Linux服务器.当我们使用ssh登录到远程系统时,它会提示输入密码,然后只允许我们登录到服务器.有时我们需要配置应用程序或脚本(主要是shell脚本 ...

  2. Could not find a version that satisfies the requirement PIL

    Python Imageing Library 简称 PIL Python常用的图像处理库之一 Pillow是PIL一个fork. C:\Users\dangzhengtao>pip insta ...

  3. UEditor之实现配置简单的图片上传示例 转

    http://blog.csdn.net/huangwenyi1010/article/details/51637427 + http://blog.csdn.net/cr135810/article ...

  4. onvif 框架代码生成

    1:gsoap官网(http://gsoap2.sourceforge.net/)下载最新版gsoap(本次版本为gsoap_2.8.17)并解压. 2:新建一个文件夹(OnvifFramework) ...

  5. 对于Linux内核执行过程的理解(基于fork、execve、schedule等函数)

    382 + 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验环境 win10 -> VMware -> Ubuntu1 ...

  6. js获取世界不同时区的当前时间

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. python实现redis分布式锁

    https://www.cnblogs.com/wangwei916797941/p/10030805.html

  8. Python assert(断言)

    Python assert(断言)可以分别后面的判断是否正确,如果错误会报错 示例: a = 1 assert type(a) is int print('No problem') 输出结果: No ...

  9. 20175202 《Java程序设计》第八周学习总结

    20175202 2018-2019-2 <Java程序设计>第八周学习总结 教材知识点总结 1.泛型: 主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 泛型类的声 ...

  10. intval — 获取变量的整数值

    echo intval ( '-42' ); // -42