语句(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"
}
这样做的好处都有啥?
很多时候,我们编程时说的安全并不是指怕被黑客破坏掉,而是预防自己因为逗比而让程序崩了.