文档章节

内建控制结构之if表达式

柳哥
 柳哥
发布于 2014/06/07 10:45
字数 390
阅读 57
收藏 1

Scala的if语句与其它语言相比没有什么不同。它可以检测条件并根据其是否为真,执行两个分支中的一个。下面是常见的以指令式风格编写的例子:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        var filename = "default.txt"
        if(!args.isEmpty) filename = args(0)
        println(filename)
    }
}

这段代码声明了变量filename,并初始化为默认值。然后使用if表达式检查程序是否带有参数。如果是,就把变量改成参数列表中定义的值,如果没有参数,就保持变量的默认值。这段代码还有优化的余地,如下例:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        val filename = if(!args.isEmpty) args(0) else "default.txt"
        println(filename)
    }
}

这一次,if有了两个分支。如果args不为空,那么选择初始化元素args(0),否则,选择默认值。这段代码的实际优点在于使用val而不是var使用val体现了函数式的风格,并且具有与java的final变量类似的效果。
使用val而不是var的第二点好处是它能更好地支持等效推论在表达式没有副作用的前提下,引入的变量等效于计算它的表达式。因此,无论何时都可以用表达式替代变量名。如下:

package scalaTest
object Test4 {
    def main(args:Array[String]) {
        println(if(!args.isEmpty) args(0) else "default.txt")
    }
}

注:尽可能寻找使用val的机会,它们能让你的代码既容易阅读又容易重构。

© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 203
博文 405
码字总数 347782
作品 0
杭州
技术主管
freemarker语法介绍及其入门

FreeMarker标签使用 一、FreeMarker模板文件主要有4个部分组成 1、文本,直接输出的部分 2、注释,即<#--...-->格式不会输出 3、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数...

wersdffg
2014/09/30
0
0
freemarker总结

Freemarker 使用总结 FreeMarker模板文件主要由如下4个部分组成: 文本:直接输出部分 注释:<!-- …-->格式部分,不输出 插值:即${}或者#{}部分,使用数据模型中的部分替代输出. FTL指令:freema...

忘川-hsm
2016/11/01
7
0
FreeMarker标签介绍及各种数据类型处理

FreeMarker标签使用 一、FreeMarker模板文件主要有4个部分组成 1、文本,直接输出的部分 2、注释,即<#--...-->格式不会输出 3、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数...

驛路梨花醉美
2016/11/29
17
0
看书 Python 源码分析笔记 (五)

第9章 Python 虚拟机中的一般表达式 这里一般表达式指对象创建语句, 打印语句等. if, while 等归为控制流语句于下一章. 简单内建对象的创建 示例 python 代码: i = 1 // int objects = "Pyt...

刘军兴
2015/12/21
78
0
FreeMarker标签介绍

FreeMarker标签使用 一、FreeMarker模板文件主要有4个部分组成 1、文本,直接输出的部分 2、注释,即<#--...-->格式不会输出 3、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数...

机器学习
2013/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

InvalidKeyException: Illegal key size

Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size 解决方案:去官方下载JCE无限制权限策略文件。 jdk 5: http://www.oracle.com/technetwork/j......

自由的开源
9分钟前
0
0
JAVA秒杀实现以及优化原理

秒杀与其他业务最大的区别在于:秒杀的瞬间, (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大。 关于(2),最常用的办法就是做页面静态化,也就是常说的前后端分...

小贱是个程序员
13分钟前
1
0
Spring Aop之Advisor解析

在上文Spring Aop之Target Source详解中,我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到,Spring Aop对目标bean进行代理是通过Ann...

爱宝贝丶
15分钟前
0
0
Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点

前言: 分享 Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点,文章有点长,但比较全面,阅读时间15分钟左右,干货满满。 一、HashMap的那些事 1.1、HashMap的实现原理 1.1.1、...

Java大蜗牛
40分钟前
2
0
nginx模块学习五 expires 浏览器缓存

缓存原理 语法 Syntax: expires [modified] time;expires epoch | max | off;Default: expires off;Context: http,server,location,if in location 例/etc/nginx/conf.d/default.con......

Romanceling
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部