中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala有哪些表達式

發布時間:2021-12-08 15:29:22 來源:億速云 閱讀:138 作者:iii 欄目:云計算

本篇內容介紹了“Scala有哪些表達式”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、條件表達式

if else是可以返回值的,if (x > 0) 1 else -1,這個表達式的返回值是Int類型,-1或者1。所以可以這么寫val i = if (x > 0) 1 else -1 ,其實我更喜歡這么寫 if (x > 0) i=1 else i=-1,前者更加函數化,用val就行,后者更加指令化,必須用var。

二、Unit,if (x > 0) 1,x > 0的話,返回值是1,這個沒有問題,可是x < 0怎么辦呢?這個表達式沒有返回值,沒關系,Scala當中有一個Scala.Unit,寫作(), 就相當于void 。

三、關于分號,scala當中可寫可不寫,但有一種情況必須寫,一行寫了多個語句,其實這個事不知道也行,干嘛非要一行寫多個語句。

四、塊表達式

java當中也有差不多的東西,不同的是,scala這東西也是有返回值的,返回值就是 x + y ,最后一句話是x + y,這在java當中是不可理解的東西,但是scala當中,這個就相當于是這個塊表達式的返回值。

val res = { val x = 10; val y = 20; x + y }

五、While,scala和java沒有明顯區別,按照我的理解,while是比較指令化的東西,在scala當中盡量避免使用。

六、For, for(i <- 1 to 10) println(i),這是scala當中for的典型樣子,跟java當中for (String str : String[])寫法是類似的,這個東西在scala當中常用,下面有更詳細的介紹。

七、高級for循環

1、多層循環不用寫多個for;

2、for的括號內,可以寫很多語句;

3、每個生成器后面可以帶一個守衛

for (i <- 1 to 10 if i % 2 == 0; toValue = 5; j <- 1 to toValue if j % 2 == 0) println(i, j)

八、for推導式

for語句之所以在scala當中更加受寵,因為它也能有返回值。下面語句的返回值是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)

九、函數

不需要return,最后一個表達式的值就是返回值,也就是x或者-x

def abs(x : Int) = if (x > 0) x else -x

十、默認參數和帶名參數,這里充分體現了scala的靈活性

def concat(value : String, left : String = "[", right : String = "]") = left + value + right

十一、變長參數,終于又減到一個跟java差不多的概念

def sum(args : Int*) = {累加操作}

十二、過程

這里其實也跟java差不多,void開頭的方法在java當中可以稱之為過程,而在scala當中,沒有返回值的函數,也可以稱之為過程,不過在scala當中,強調的是函數化的編程,所以,一個函數返回值以外的操作,被稱之為副作用。過程有以下兩種寫法:

def printSelf(str: String) {print(str)}或 def printSelf(str: String) :Unit = {print(str)}

十三、lazy val變量的延遲加載,在第一次訪問的時候,在實際加載值

十四、異常,無受檢機制,也有返回值,Nothing

“Scala有哪些表達式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

舒城县| 扎囊县| 台前县| 东安县| 渑池县| 成安县| 满洲里市| 富锦市| 墨竹工卡县| 吴桥县| 张家口市| 波密县| 正定县| 湘乡市| 吉木萨尔县| 云梦县| 贵阳市| 苗栗县| 左云县| 鄢陵县| 汤阴县| 林州市| 鹤山市| 突泉县| 右玉县| 呼图壁县| 梁山县| 巢湖市| 定兴县| 通辽市| 泽普县| 眉山市| 潍坊市| 奉化市| 河曲县| 延川县| 界首市| 黔西| 巨野县| 苏尼特左旗| 东乌珠穆沁旗|