Scala:Functions and Closures
生活随笔
收集整理的這篇文章主要介紹了
Scala:Functions and Closures
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 object Functions { 2 def main(args: Array[String]) { 3 // 本地函數 4 def localFun(msg: String) = println(msg) 5 localFun("Hi") 6 7 // 函數對象 8 var list = List(1, 2, 3) 9 list.foreach((x: Int) => println(x)) 10 list.foreach(x => println(x)) 11 list.foreach(println(_)) 12 list.foreach(println _) 13 list.foreach(println) 14 list.foreach(localFun) 15 16 // 部分應用函數,將函數轉換為函數對象 17 var addXY5 = add(_: Int, _: Int, 5) 18 println(addXY5(3, 4)) 19 var addFunObj = add _ 20 println(addFunObj(3, 4, 5)) 21 } 22 23 def add(x: Int, y: Int, z: Int): Int = { 24 x + y + z 25 } 26 }
嵌套方法、本地方法、字面量,不過是編譯器動態幫忙生成了一些匿名類,閉包中捕獲的變量也是將其變為這些匿名類型的成員。重點說一下function object,類似.Net的Delegate,function object的字面量表示為:(arguments list)=> body,如果參數在方法中只會出現一次,則可以采用“_”語法,即:不用參數列表,_出現的次序依次為對應的參數。
function 如何轉換為 function object?這就涉及partial apply function,具體也很簡單,對于任意一個函數:func,func _ 代表沒有apply任何參數,返回一個和func有同樣參數列表的function object,也可以像上例一樣只填充部分參數。
如果需要的function object的簽名和function的簽名一致,則編譯器會自動將function部分應用為function object。
?
轉載于:https://www.cnblogs.com/happyframework/p/4216975.html
總結
以上是生活随笔為你收集整理的Scala:Functions and Closures的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROOT android 原理。 基于(
- 下一篇: 测试用例挑选策略