从语句到表达式
2018-02-24 15:59 更新
语句(statement): 一段可执行的代码
表达式(expression): 一段可以被求值的代码
在Java中语句和表达式是有区分的,表达式必须在return或者等号右侧,而在scala中,一切都是表达式.
一个例子:
假设我们在公司的内网和外网要从不同的域名访问一样的机器
//Java代码
String urlString = null;
String hostName = InetAddress.getLocalHost().getHostName();
if (isInnerHost(hostName)) {
urlString = "http://inner.host";
} else {
urlString = "http://outter.host";
}
刚转到scala的人很可能这么写
var urlString: String = null
var hostName = InetAddress.getLocalHost.getHostName
if (isInnerHost(hostName)) {
urlString = "http://inner.host"
} else {
urlString = "http://outter.host"
}
我们让它更像scala一点吧
val hostName = InetAddress.getLocalHost.getHostName
val urlString = if (isInnerHost(hostName)) {
"http://inner.host"
} else {
"http://outter.host"
}
这样做的好处都有啥?
- 代码简练,符合直觉
- urlString 是值而不是变量,有效防止 urlString 在后续的代码中被更改(编译时排错)
很多时候,我们编程时说的安全并不是指怕被黑客破坏掉,而是预防自己因为逗比而让程序崩了.
以上内容是否对您有帮助:
← 概述
更多建议: