[Scala] 學習筆記

1. 函數的用法:

1. 一般函數:。def sum1() = 1 + 1   // sum1 宣告成無參數函數,等同 def sum1() = { 1 + 1 }
呼叫:

a. sum1   // 印出2,呼叫無參數函數不必加()
b. val val1 = sum1 _ // 指派函數給 val1
val1()    // 印出2

1-1。def sum2(n: Int) = n + 1 // sum2 宣告成帶參數函數,等同 def sum2(n: Int) = { n + 1 }
呼叫:

a. sum2(1)   // 印出2
b. val val2 = sum2 _ //指派函數給 val2,等同 val val2 = sum2(_: Int)
val2(1)    // 印出2

2. 一般函數回傳函數。def sum3() = (n: Int) => n + 1 // sum3 宣告成無參數函數回傳匿名函數,等同def sum3() = { (n: Int) => n + 1 }
呼叫:

a. sum3 // 印出 Int => Int = <function0>,呼叫無參數函數不必加()
b. val val3 = sum3 // 注意:指派的是 sum3() 回傳的匿名函數
val3(1) // 印出2

2-1。val sum4 = (n: Int) => n + 1 // 直接宣告 sum4 不變量指向匿名函數
呼叫:sum4(1) // 印出2,等同上面的2.b
2-3。def sum5(m: Int) = { (n: Int) => m + n } // sum5 宣告成帶參數函數回傳匿名函數,此處不可省略{}
呼叫:

a. sum5(2) // 印出 Int => Int = <function0>
b. val val5 = sum5(2) // 注意:指派的是 sum5(2) 回傳的匿名函數,帶閉包 m=2
val5(1) // 印出3

3. 將Callback當參數的函數。def sum6(fun: (Int) => Int) = fun(2) + 1
呼叫:

a. sum6((n: Int) => n + 1) // 印出4,等同sum6({(n: Int) => n + 1}),只傳一個Callback參數可省略小括號,故也等同sum6{(n: Int) => n + 1}
b. sum6((n: Int) => n *2) // 印出5

 

參考文章:

1. http://zh.scala-tour.com
2. http://www.codedata.com.tw/java/scala-tutorial-easy-statically-typed-lang/
3. http://twitter.github.io/scala_school/zh_cn/
4. https://github.com/chikei/scala.github.com/blob/zh_TW/zh/tutorials/scala-for-java-programmers.md
5. http://hatemegalaxy.blogspot.tw/2014/09/play-framework-useful-tutorials-for.html
6. http://www.scala-lang.org/api/current/
7. https://www.playframework.com/documentation/2.3.x/api/scala/index.html

Play framework 安裝筆記 (with Scala)

1. 安裝 Java
2. 安裝 Activator
3. export PATH=$JAVA_HOME/bin:$ACTIVATOR_HOME:$PATH
4. 建立 Play template

a. activator new my-first-app play-scala
b. cd my-first-app
c. activator

5. 建立 Play 專案 for Eclipse

a. [my-first-app] $ eclipse with-source=true

6. 打開 Eclipse 匯入專案

a. File/Import/General/Existing project… 匯入專案
b. 下載 Scala plugin:
Help/Install New Software… 添加 Scala IDE 的URL: http://download.scala-ide.org/sdk/e38/scala210/stable/site,勾選並下載:

。Scala IDE for Eclipse
。Scala IDE plugins (incubation) 的 Play2 support in Scala IDE

c. 切換 Perspective 到 Scala
d. Done!