Scala 学习笔记(2)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、條件表達(dá)式,if else是可以返回值的,if (x > 0) 1 else -1,這個(gè)表達(dá)式的返回值是Int類型,-1或者1。所以可以這么寫val i = if (x > 0) 1 else -1 ,其實(shí)我更喜歡這么寫 if (x > 0) i=1 else i=-1,前者更加函數(shù)化,用val就行,后者更加指令化,必須用var。
二、Unit,if (x > 0) 1,x > 0的話,返回值是1,這個(gè)沒(méi)有問(wèn)題,可是x < 0怎么辦呢?這個(gè)表達(dá)式?jīng)]有返回值,沒(méi)關(guān)系,Scala當(dāng)中有一個(gè)Scala.Unit,寫作(), 就相當(dāng)于void 。
三、關(guān)于分號(hào),scala當(dāng)中可寫可不寫,但有一種情況必須寫,一行寫了多個(gè)語(yǔ)句,其實(shí)這個(gè)事不知道也行,干嘛非要一行寫多個(gè)語(yǔ)句。
四、塊表達(dá)式,java當(dāng)中也有差不多的東西,不同的是,scala這東西也是有返回值的,返回值就是 x + y ,最后一句話是x + y,這在java當(dāng)中是不可理解的東西,但是scala當(dāng)中,這個(gè)就相當(dāng)于是這個(gè)塊表達(dá)式的返回值。
val res = { val x = 10; val y = 20; x + y }
五、While,scala和java沒(méi)有明顯區(qū)別,按照我的理解,while是比較指令化的東西,在scala當(dāng)中盡量避免使用。
六、For, for(i <- 1 to 10) println(i),這是scala當(dāng)中for的典型樣子,跟java當(dāng)中for (String str : String[])寫法是類似的,這個(gè)東西在scala當(dāng)中常用,下面有更詳細(xì)的介紹。
七、高級(jí)for循環(huán),1、多層循環(huán)不用寫多個(gè)for;2、for的括號(hào)內(nèi),可以寫很多語(yǔ)句;3、每個(gè)生成器后面可以帶一個(gè)守衛(wèi)
for (i <- 1 to 10 if i % 2 == 0; toValue = 5; j <- 1 to toValue if j % 2 == 0) println(i, j)
八、for推導(dǎo)式,for語(yǔ)句之所以在scala當(dāng)中更加受寵,因?yàn)樗材苡蟹祷刂怠O旅嬲Z(yǔ)句的返回值是Vector((2,2), (2,4), (4,2), (4,4), (6,2), (6,4), (8,2), (8,4), (10,2), (10,4))
for (i <- 1 to 10 if i % 2 == 0; toValue = 5; j <- 1 to toValue if j % 2 == 0) yield (i, j)
九、函數(shù),不需要return,最后一個(gè)表達(dá)式的值就是返回值,也就是x或者-x
def abs(x : Int) = if (x > 0) x else -x
十、默認(rèn)參數(shù)和帶名參數(shù),這里充分體現(xiàn)了scala的靈活性
def concat(value : String, left : String = "[", right : String = "]") = left + value + right
十一、變長(zhǎng)參數(shù),終于又減到一個(gè)跟java差不多的概念
def sum(args : Int*) = {累加操作}
十二、過(guò)程,這里其實(shí)也跟java差不多,void開頭的方法在java當(dāng)中可以稱之為過(guò)程,而在scala當(dāng)中,沒(méi)有返回值的函數(shù),也可以稱之為過(guò)程,不過(guò)在scala當(dāng)中,強(qiáng)調(diào)的是函數(shù)化的編程,所以,一個(gè)函數(shù)返回值以外的操作,被稱之為副作用。過(guò)程有以下兩種寫法:
def printSelf(str: String) {print(str)}或 def printSelf(str: String) :Unit = {print(str)}
十三、lazy val變量的延遲加載,在第一次訪問(wèn)的時(shí)候,在實(shí)際加載值
十四、異常,無(wú)受檢機(jī)制,也有返回值,Nothing
轉(zhuǎn)載于:https://my.oschina.net/dongtianxi/blog/731277
總結(jié)
以上是生活随笔為你收集整理的Scala 学习笔记(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: apache占用80端口,导致nginx
- 下一篇: ASP.NET MVC的Action拦截