Scala第一天

https://www.scala-lang.org/ 官網


Linux 第一個Scala的案例:wordcount

代碼如下:

spark語言代碼

通過這段代碼我們需要了解:

1)Scala語言的簡潔性

2)函數式編程

3)spark是比MapReduce要快的。


Scala:object-oriented meets functional 面向對象遇到函數式編程

Scala的定位

特點:優雅、速度快、能融合到Hadoop生態圈


第一步:在Windows系統下配置Scala環境

? ? ? ?下載Scala:現在市場上流行的是2.11版本,所以下載2.11版本

? ? ? ?本地版本:.msi,安裝之后在命令端直接可以使用了,不需要配置環境變量

? ? ? 然后就可以在Windows下運行Scala代碼了:

? ? ? ? ? 寫一個.scala文件:

? ? ? ? ? ? ? ? ? object Hello extends App{

? ? ? ? ? ? ? ? ? ? ? ?def? square(args:Array[String]) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? println("Hello, World!")

? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ?在cmd命令窗口進入該文件所在目錄,編譯:Scalac Hello.scala,運行:Scala Hello.class

第二步:安裝IDEA工具

? ? ? ?注意選擇磁盤上已經有的scala插件

? ? ? ?注意要選擇sdk目錄

? ? ? 注意最后要重啟

第三步:編寫代碼并運行

? ? ? ? ? 第一種:直接在IDEA窗口端執行代碼

? ? ? ? ? 第二種:手動打jar包->在Windows的命令窗口:首先進入該jar包所在目錄,然后執行命令:java -jar 1705scala.jar

? ? ? ? ? 小提示:在hdfs上也可以使用java -jar運行。

第四步:在Windows的Scala環境下聲明變量

? ? ? ? ? 使用Windows下的Scala環境來定義變量:

? ? ? ? ? 定義變量的修飾符val 和var

? ? ? ? ? 兩者的區別:var修飾的變量可以修改值;val修飾的變量是final類型的,不可以改變變量的值。

? ? ? ? ? ?在Scala中鼓勵使用val,即不讓改變變量的值。

? ? ? ? ? ?可以這樣思考:var是variable--變量,val是value--定義值


基本數據類型:

? ? ? ?首先有7中基本數據類型:Byte,Short,char,Int,Long,Float,Double,Boolean

? ? ? ?學習Scala常用類型的網站:Scala菜鳥驛站

條件表達式:在Scala中條件表達式是有返回值的,默認返回res0

? ? ? ? ?如果條件表達式的返回值類型不一樣,會返回Any類型的變量

? ? ? ? 如果不寫else默認會在后面補一個[else()]最終推斷出來的類型是AnyVal

? ? ? ? ()表示Unit類型,相當于java中的void類型。

條件表達式的特殊返回值

塊表達式:最后一個表達式的值就是整個塊表達式的返回值。要理解這個概念,首先要理解一個塊的起始和結束標志,就是一對花括號包含的所有代碼就是一個塊表達式。

直接在窗口中寫批量代碼,使用下面這種方式:

? ? ? ? ? ? ? ?scala> :paste

? ? ? ? ? ? ? // Entering paste mode (ctrl-D to finish)

? 寫完代碼之后按Ctrl+D退出這種模式。

循環:while循環和for循環

? ? ?while循環:與java中while循環基本無異,但不支持++和--,注意如果要+和-變量要用var修飾

? ? for循環:定義數組 val x=Array(“a”,“b”,"c"),遍歷數組

? ? ? ? ? ? ? 第一種方式 for(i <- x){println(x)}?

? ? ? ? ? ? ? 第二種方式:for(i <- 1 to 10) {println(x)}

? ? ? ? ? ? ? 第三種方式:for(i <- 1 to x.length-1) {println(x(i))}

? ? ? ? ? ? ? 第三種方式:for(j <- 0 until x.length){println(x(i))}

? ? ? ? ? ? ? 小提示:在Scala中運算符==方法

? ? ?用一個集合(默認是Vector類型) 接收for循環所有的返回值,關鍵字:yield

? ? ?位操作符:& | ^ >> <<


調用方法和函數:

方法的聲明:方法與執行塊之間有=表示有返回值,不寫表示沒有返回值

? ? ? ? ? ? ? ? ? ? ? ? 兩個同名的方法會覆蓋

方法的調用:方法名 (實參),如果有返回值用一個變量接收返回值

函數式編程

這整個過程類似于java中的裝飾模式以及函數式編程。

裝飾模式是指在原有類的基礎上,對其中的某些方法進行增強的一種模式,這種模式在java IO中體現的最為明顯,字節流到緩存流的封裝。

實踐:對List集合增強map方法,并且該方法可以實現函數式編程。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容