Scala中if使用

从表面上看,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 Person
class Student extends Person
class Worker extends Person
def getPerson(age:Int){
    val p1 = if(age <= 25){
        new Student()
    }else{
        new Worker()
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值