Scala基礎(chǔ)(4)- 控制結(jié)構(gòu)

If 表達(dá)式有返回值

你可以這樣賦值阵漏,

val s = if (x > 0) 1 else -1

這樣就不必像下面這樣峭弟,這里s就必須是一個變量了朗伶。

if (x > 0) s = 1 else s = -1

你甚至可以根據(jù)情況返回不同類型的值

if (x > 0) "OK" else -1

語句結(jié)束不用分號

除非多個語句在一行出現(xiàn)好渠,比如

if (n > 0) { r = r * n; n -= 1 }

語句塊賦值

之前已經(jīng)提到了昨稼,可以使用大括號包含一個語句塊,從而實(shí)現(xiàn)比較復(fù)雜的計算然后賦值拳锚。

val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }

簡單循環(huán)

簡單while


def gcdLoop(x: Long, y: Long): Long = {
    var a = x
    var b = y
    while (a != 0) {
        val temp = a 
        a=b%a
        b = temp
   }
b 
}

簡單for循環(huán)

for (i <- 1 to 4)
       println("Iteration "+ i)

高級的For循環(huán)

加入Filter

 val filesHere = (new java.io.File(".")).listFiles
        for (file <- filesHere if file.getName.endsWith(".scala"))
println(file)

多個生成器

def grep(pattern: String) =
          for (
            file <- filesHere
            if file.getName.endsWith(".scala");
            line <- fileLines(file)
            if line.trim.matches(pattern)
          ) println(file +": "+ line.trim)

異常

Scala基本沿用Java的異常假栓。但是沒有checked exception,捕捉異郴舨簦可以使用靈活的模式匹配

try {
    process(new URL("http://horstmann.com/fred-tiny.gif"))
} catch {
    case _: MalformedURLException => println("Bad URL: " + url) 
    case ex: IOException => ex.printStackTrace()
}

和其他Scala控制結(jié)構(gòu)一樣匾荆,try-catch-finally是有返回值的。下面的例子教你如何在異常發(fā)生時返回一個默認(rèn)值杆烁。注意的時finally通常用來做資源回收牙丽,不要依賴finally返回值。

def urlFor(path: String) =
          try {
            new URL(path)
          } catch {
            case e: MalformedURLException =>
              new URL("http://www.scala-lang.org")
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兔魂,一起剝皮案震驚了整個濱河市烤芦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌析校,老刑警劉巖构罗,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異智玻,居然都是意外死亡遂唧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門尚困,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠢箩,“玉大人,你說我怎么就攤上這事事甜∶冢” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵逻谦,是天一觀的道長掌实。 經(jīng)常有香客問我,道長邦马,這世上最難降的妖魔是什么贱鼻? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任宴卖,我火速辦了婚禮,結(jié)果婚禮上邻悬,老公的妹妹穿的比我還像新娘症昏。我一直安慰自己,他們只是感情好父丰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布肝谭。 她就那樣靜靜地躺著,像睡著了一般蛾扇。 火紅的嫁衣襯著肌膚如雪攘烛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天镀首,我揣著相機(jī)與錄音坟漱,去河邊找鬼。 笑死更哄,一個胖子當(dāng)著我的面吹牛芋齿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播成翩,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼沟突,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捕传?” 一聲冷哼從身側(cè)響起惠拭,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庸论,沒想到半個月后职辅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聂示,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年域携,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鱼喉。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡秀鞭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扛禽,到底是詐尸還是另有隱情锋边,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布编曼,位于F島的核電站豆巨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掐场。R本人自食惡果不足惜往扔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一贩猎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萍膛,春花似錦吭服、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绿饵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓶颠,已是汗流浹背拟赊。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粹淋,地道東北人吸祟。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像桃移,于是被迫代替她去往敵國和親屋匕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法借杰,類相關(guān)的語法过吻,內(nèi)部類的語法,繼承相關(guān)的語法蔗衡,異常的語法纤虽,線程的語...
    子非魚_t_閱讀 31,643評論 18 399
  • 讀《快學(xué)Scala 》一書的摘要 Scala 運(yùn)行于JVM之上,擁有海量類庫和工具绞惦,兼顧函數(shù)式編程和面向?qū)ο蟆?在...
    abel_cao閱讀 1,282評論 0 8
  • 作者的序言 朋友們逼纸,棄療系列4出來啦,作者還并沒有放棄济蝉,感覺自己萌萌噠杰刽,233。 語句 js程序其實(shí)就是一系列可執(zhí)...
    zhaolion閱讀 1,755評論 0 8
  • 我是一個追求邏輯王滤、嚴(yán)謹(jǐn)贺嫂、本質(zhì)、規(guī)范雁乡、完美的人涝婉,所以,當(dāng)看到不嚴(yán)謹(jǐn)?shù)幕蛘呷哂嗟慕忉寱r蔗怠,就想糾正一下墩弯,所以有了這篇文章...
    科研者閱讀 519評論 0 0
  • 最近寫的ionic2項(xiàng)目,需要處理隔天請求某些數(shù)據(jù)時,會提示非法請求,然后根據(jù)后端返回的error,退出登錄,并返...
    天亮前被尋找的一只貓閱讀 6,509評論 0 6