[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

廣告
新文章
發表留言

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: