Scala 學習筆記 (1):初見

ScalaCool發表於2017-07-21

本文由 Koon 發表在 ScalaCool 團隊部落格。

關於筆記

​ 大家好⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄,我是 Koon ,作為一名剛剛離開學校,開始體悟社會百態的大學僧, Scala 將作為我第一份工作不可或缺的一部分。為了高效學習鞏固知識以及督促自我,我決定記錄我的學習歷程。

​ 這裡所有的記錄內容都將是我遇到的問題的解決,以及一些問題的看法,我會將所有所遇到的問題用學習清單的方式展示,而這些問題的來源,可能來自下面的學習列表,也可能來自我的學習內容,但是我都將註明出處。

關於學習

​ 我為什麼選擇Scala 作為我今後學習、工作的主要語言?

​ 很簡單,因為我喜歡嘗試。在初學計算機程式設計時,我想大多數人的經歷會和我一樣,學校為我們挑選一門語言,大多為 CJava ,先是基本的資料型別,然後是程式控制語句,學習定義一個函式,那麼程式就是一條一條的指令,告訴計算機該如何操作即可。那麼 Scala 對於我而言就是一場冒險。

​ 另一個原因,我並不滿足現在所學的知識框架,就像前面所提及的學習過程一樣,慢慢地,我們開始嘗試一些邏輯上的概念來簡化程式,比如迭代,比如遞迴。老師用事實告訴我們,就像斐波那契數列,在指令式的環境下,迭代優於遞迴。

​ 在長期的教學過程中,只有指令式程式設計得到了強調,那就是程式設計師要告訴計算機應該怎麼做,而不是告訴計算機做什麼。而遞迴則通過靈巧的函式定義,告訴計算機做什麼。我們為自己某種能力的喪失編織了一個美麗的謊言,直到越來越多的程式語言變得流行起來,使我們有機會看到各種語言、各種風格寫出的程式,才發現自己應該重新審視遞迴這一概念。

​ 無獨有偶,很多優秀的性質在Scala 或者其他函式式的語言上得以體現,現在我們可以將函式視作數學上的函式,變數視作代數系統的變數,語句視作函式的語法糖,如果把物件導向比作搭積木的話,那麼函式式就是拼線條,更靈活更有創意。

​ 我認為,正確的學習方式是魯迅先生所謂的拿來主義,既不全盤吸收,也不全盤放棄。現在網路上充斥著各種聲音,有些激進有些委婉,同樣的意思,不同人的說法可能帶來的理解也不一樣,因此你需要自己的標準,我認為最好的標準就是教科書,我現在使用的是 Cay S.Horstmann著 高宇翔譯《快學Scala》,當然,書,肯定有更好的。



關於使用

​ 如何使用這本筆記?我是一名初學者,每一天的學習,我都會遇到各種各樣的問題,之後的每一篇的開始,我都將列下一份列表清單,就像這裡的例子。

​ 如果你與我一樣正在學習,你也可以根據自己的所學,進行一個測試,你可以給自己的學習做一個判斷,然後去解決沒有解決的問題,我會對於清單中的難點和重點進行深層次的調研。

​ 如果你走在我的前面,非常歡迎你給我提供任何的意見,無論是內容排布,或者是在內容理解方面。

學習列表(例)

  1. twitter Scala 課堂, by twitter
  2. 菜鳥教程, by 菜鳥教程
  3. 寫點什麼, by hongjiang
  4. Coursera 課程, by coursera
  5. 其他學習資料整合, by 小柑

學習清單(例)

  1. Scala 中的 String 就是 Java 中的 String ,因此可以使用 String 的所有方法;但是 Scala 不僅僅是更好的 Java ,應該用全新的頭腦來學習他。

  2. 在命令列下可以使用直譯器建立的變數名,但是在 idea 下,不能在 worksheet 下直接使用這個變數名。

  3. Scala 中 if-else if… 最終一定要有 else

  4. 函式和方法很相似,而當真正遇到方法和函式之間的差異的時候,你可能會感到困惑。區別有:方法不是一個值,而函式是,可以將一個方法轉為函式賦值給變數,有時候根據上下文編譯器可以自動將方法轉化為函式,而不需要使用下劃線。

  5. 什麼時候應該使用特質而不是抽象類。使用特質優先;而需要使用建構函式引數的時候,使用抽象類,因為 trait t(i: Int){} 中引數 i 是非法的。

  6. 關於函式的泛型,用方括號語法引入的型別引數。

  7. 關於 apply 方法,當類或物件有一個主要用途的時候, apply 方法提供了一個很好的語法糖。定義一個 def ,用 apply()=… 表示了類的主要功能或者說是用途...

寫在最後

​ 這裡是《Scala學習筆記》的序言,因為內容較多,所以乾脆取名為"1",下一篇,我們將開啟新世界的大門,以上 :)

​ 停止炫耀你的忙碌!從“慢些匆忙”到“告別匆忙”,從“從容不迫”到“懂慢的人”。
​ 慢慢來,比較快。

相關文章