Scala中if使用

来源:互联网 发布:监视网络流量软件 编辑:程序博客网 时间:2024/06/14 07:26

从表面上看,Scala中的if语句看起来很像Java中的If语句。执行时首先判断表达式的值,如果为true,则执行对应代码块。否则进行下一代码块判断。如下:

if(2+2 == 5){    println("hello from 1984.")}else if(2+2 ==3){    println("hello from Remedial wath class?")}else{    println("hello from a non-Orwellian future.")}

上述代码与java中if语句没有任何差异,会执行条件为true的代码块。但是,在Scala中,if与几乎所有其他语句都是具有返回值的表达式。即可以将一个if语句赋值一个变量。如:

val configFile = new java.io.File("somefile.txt")val configFilePath = if(configFile.exists()){    configFile.getAbsolutePath()}else{    configFile.createNewFile()    configFile.getAbsolutePath()}

上述代码实现的功能是:判断文件是否存在,如果存在,则将文件的绝对路径赋值给configFilePath,否则新建文件,并将新文件路径赋值给configFilePath。
对于if语句的返回值,主要时是根据各个判断子句可能返回的类型决定,即取各个可能返回值的最接近父类,也称为所有条件分支的最小上界类型。

class Personclass Student extends Personclass Worker extends Persondef getPerson(age:Int){    val p1 = if(age <= 25){        new Student()    }else{        new Worker()    }}

在上述代码中,如果输入年龄小于25,则返回Student对象,如果大于25,则返回Worker对象。Scala会根据类型推导,判断各个分支语句返回值,然后取其最小父类。本例中,if表达式返回值是Student和Worker的共有父类,即Person。

0 0
原创粉丝点击