從語(yǔ)句到表達(dá)式

2018-02-24 15:59 更新

語(yǔ)句(statement): 一段可執(zhí)行的代碼
表達(dá)式(expression): 一段可以被求值的代碼

在Java中語(yǔ)句和表達(dá)式是有區(qū)分的,表達(dá)式必須在return或者等號(hào)右側(cè),而在scala中,一切都是表達(dá)式.

一個(gè)例子:
假設(shè)我們?cè)诠镜膬?nèi)網(wǎng)和外網(wǎng)要從不同的域名訪問(wèn)一樣的機(jī)器

//Java代碼
String urlString = null;
String hostName = InetAddress.getLocalHost().getHostName();
if (isInnerHost(hostName)) {
  urlString = "http://inner.host";
} else {
  urlString = "http://outter.host";
}

剛轉(zhuǎn)到scala的人很可能這么寫

var urlString: String = null
var hostName = InetAddress.getLocalHost.getHostName
if (isInnerHost(hostName)) {
  urlString = "http://inner.host"
} else {
  urlString = "http://outter.host"
}

我們讓它更像scala一點(diǎn)吧

val hostName = InetAddress.getLocalHost.getHostName
val urlString = if (isInnerHost(hostName)) {
  "http://inner.host"
} else {
  "http://outter.host"
}

這樣做的好處都有啥?

  1. 代碼簡(jiǎn)練,符合直覺(jué)
  2. urlString 是值而不是變量,有效防止 urlString 在后續(xù)的代碼中被更改(編譯時(shí)排錯(cuò))

很多時(shí)候,我們編程時(shí)說(shuō)的安全并不是指怕被黑客破壞掉,而是預(yù)防自己因?yàn)槎罕榷尦绦虮懒?

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)