Scala 入門(mén) => 進(jìn)階

Continuous Updating...

第一部分近弟,入門(mén)

  1. 變量聲明:var缅糟,val,lazy val

    • var聲明可變變量祷愉;val聲明不可變變量窗宦。推薦使用val。
    • lazy val惰性賦值:在變量調(diào)用時(shí)執(zhí)行賦值二鳄,賦值后值不可變赴涵。
    • 編譯器自動(dòng)推斷類型,無(wú)需顯示指明變量類型订讼。
  2. 函數(shù)定義:val髓窜,def

    • val定義函數(shù)變量。
    • 無(wú)需顯示return欺殿,默認(rèn)最后一行為返回結(jié)果
  3. 字符串

    • "hello world"
    • 保存字符串格式
      """ {
      attr1: hello,
      attr2: world
      } """
  4. 控制結(jié)構(gòu): if else, for, while, try ... catch

    • 沒(méi)有寄纵?:,只有if else

    • if else有返回值

    • for
      for {
      i ← list
      if(i % 2 == 0)
      } println(i)

    • try ... catch
      try {
      ...
      } catch {
      case e1: Exception =>
      case e2: Exception =>
      }

  5. 模式匹配:match...case

    • 表達(dá)式脖苏,有返回值程拭;
    • 匹配上即跳出,全部未匹配throw error
    • 搭配case class
    • class C(arg: Int)
    • class C(var arg: Int)
    • class C(val arg: Int)
    • class C(private val arg: Int)
    • abstract class
      使用val聲明的變量不能通過(guò)=重新賦值
  6. object

    • 單例
    • 伴生對(duì)象
      • 對(duì)象的構(gòu)建
  7. 樣本類:case class

    • 自帶apply棍潘,unapply
    • sealed武裝
    • 搭配模式匹配
  8. trait

    • 功能更強(qiáng)大的接口
      特質(zhì)相較與接口和抽象類功能更為強(qiáng)大恃鞋,而且特質(zhì)可以保證抽象的粒度更小一下。當(dāng)明確了繼承關(guān)系時(shí)使用抽象類亦歉,但只是抽象某一特性時(shí)要使用特質(zhì)恤浪。
  9. 集合

    • List
      • head,tail
      • Nil
      • 提洒⒒铡:val List(head, tail) = List(1, 2, 3)
    • Seq
    • Map
    • Array
    • Set
  10. 集合操作

    • map
    • foreach
    • flatMap
    • fold
    • reduce
    • filter
  11. 數(shù)據(jù)結(jié)構(gòu)

    • Option

      • say good-bye to null
      • 支持集合操作
    • Tuple

      • (t1, t2), t1 -> t2
      • Map(t1 -> t2)
      • 兩元素集合
    • Either

      • 左error资锰,右result
  12. Template String

    • s"${hello}, ${firstName + lastName}"
  13. import

    • 位置:文件頭,文件中阶祭,方法中
    • 全部引用 import package._绷杜,單個(gè)引用import package.c1
  14. App特質(zhì)

    • 啟動(dòng)程序
  15. 重復(fù)參數(shù)

    • def fn(i: Int*)
    • fn(1, 2, 3)
    • fn(1, 2, 3:_*)

二,進(jìn)階

  1. 并發(fā)集合

    • List(1, 2, 3, 4).par
  2. 懶集合濒募、視圖

    • Stream
      • 遞歸數(shù)據(jù)結(jié)構(gòu)
      • 延遲計(jì)算
      • 拿多少給多少
    • View
      • 延遲計(jì)算
      • 合并復(fù)雜計(jì)算
  3. map/reduce/fold/flatMap

    • 假設(shè)我們有一筐蘋(píng)果鞭盟,fold操作就好像是我們要把這個(gè)框子中的蘋(píng)果打成果醬,我們從框中把蘋(píng)果一個(gè)一個(gè)取出來(lái)扔到機(jī)器中瑰剃,最后得到了一灘果醬齿诉;
    • map操作就好像我們要給每個(gè)蘋(píng)果套一個(gè)包裝袋,每套完一個(gè)扔到另外的框中晌姚,最后得到了一筐帶包裝的蘋(píng)果粤剧。
  4. Actor
    - message-driven
    - stateful
    - 最小并發(fā)單元

  5. promise和future

  6. 第一等函數(shù)

    • 閉包

      • 函數(shù)字面量在運(yùn)行時(shí)創(chuàng)建的函數(shù)值稱為閉包。
      • 自由變量挥唠,綁定變量抵恋。
        其實(shí)就是根據(jù)上下文對(duì)自由變量賦值的過(guò)程。
    • 偏應(yīng)用

      • 偏函數(shù)只對(duì)其定義域的一部分做處理宝磨。
      • 對(duì)于一個(gè)函數(shù)弧关,只提供其部分(或者不)參數(shù),就構(gòu)成一個(gè)偏應(yīng)用函數(shù)唤锉。
      • 偏應(yīng)用函數(shù)是函數(shù)
    • 賦值/傳遞

      • 函數(shù)可以隨意用來(lái)賦值和傳遞
    • 高階函數(shù)

      • def f2(f: ()=>Unit) { f() }
    • 匿名函數(shù)

      • f2(() => println("hello")) //匿名函數(shù)
  1. 尾遞歸
    - 遞歸不再可怕
    尾遞歸和遞歸不一樣的是世囊,Scala編譯器檢測(cè)到尾遞歸就用新值更新函數(shù)參數(shù),然后把它替換成一個(gè)回到函數(shù)開(kāi)頭的跳轉(zhuǎn)窿祥。相當(dāng)與一次新的函數(shù)調(diào)用株憾。

  2. 柯里化

    • 柯里化是把多參函數(shù)轉(zhuǎn)化為單個(gè)參數(shù)逐一調(diào)用的方式。
  3. 類型參數(shù)

  4. 型變

  5. 抽取器

  6. 依賴注入

  7. trait

三晒衩,進(jìn)階

  1. 隱式轉(zhuǎn)換

  2. 類型系統(tǒng)

  3. 類型類

  4. duck type

  5. type lambada

  6. TypeTag

  7. Functor号胚,Monad

  8. Combinator parsers

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浸遗,隨后出現(xiàn)的幾起案子猫胁,更是在濱河造成了極大的恐慌,老刑警劉巖跛锌,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弃秆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡髓帽,警方通過(guò)查閱死者的電腦和手機(jī)菠赚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)郑藏,“玉大人衡查,你說(shuō)我怎么就攤上這事”馗牵” “怎么了拌牲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵俱饿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我塌忽,道長(zhǎng)拍埠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任土居,我火速辦了婚禮枣购,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘擦耀。我一直安慰自己棉圈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布眷蜓。 她就那樣靜靜地躺著分瘾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪账磺。 梳的紋絲不亂的頭發(fā)上芹敌,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音垮抗,去河邊找鬼氏捞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冒版,可吹牛的內(nèi)容都是我干的液茎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辞嗡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捆等!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起续室,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤栋烤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后挺狰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體明郭,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年丰泊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薯定。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞳购,死狀恐怖话侄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤年堆,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布吞杭,位于F島的核電站,受9級(jí)特大地震影響嘀韧,放射性物質(zhì)發(fā)生泄漏篇亭。R本人自食惡果不足惜缠捌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一锄贷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧曼月,春花似錦谊却、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至聪姿,卻和暖如春碴萧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背末购。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工破喻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盟榴。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓曹质,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親擎场。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羽德,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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