在Scala中编写级联if语句的更好方法?

igo*_*ack 3 scala

JavaScript我们可以重写:

if (ua.isEmpty()) {
    return false;
}
else if (ua.contains('curl')) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

进入此以获得清晰的代码:

switch(true) {
    case ua.isEmpty():
        return false;
    case ua.contains('curl'):
        return false;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议我们可以在Scala中做类似的事情吗?

Dio*_*Nt. 6

如果您只关心这两个条件,那么您可以拥有这样的东西

if(ua.isEmpty || ua.contains('curl')) false
Run Code Online (Sandbox Code Playgroud)

如果您想拥有更多案件,可以执行以下操作

   ua match{
     case _ if(ua.isEmpty) => false
     case _ if(ua.contains('curl') => false
     case _ => //return whatever you want if none of the above is true
    }
Run Code Online (Sandbox Code Playgroud)

或与其他传统

if(ua.isEmpty)
 false
else if(ua.contains('curl')
 false
else 
 // return whatever you want
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不添加final else或final,case _=>则返回类型将为Anyand notBoolean