!!scala 【经典】一步一步推导!!高阶函数,类型推断

[sql]  view plain  copy
  1. --函数返回函数  
  2. scala> def fun1(name1:String) = (name2:String) => println(name1+" "+name2)  
  3. fun1: (name1: String)String => Unit  
  4.   
  5. --等号=左边是函数,右边返回值是匿名函数。函数返回函数  
  6.   
  7. scala> val fun1_v = fun1("Spark")    --接收name1参数  
  8. fun1_v: String => Unit = <function1>  
  9.   
  10. scala> fun1_v("Scala")          --接收name2参数  
  11. Spark Scala  
  12.   
  13.   
  14. ----------------------------------------------------  
  15. --高阶函数一步一步推导成最简洁的语法  
  16.   
  17. scala> def spark(func:(String)=>Unit,name:String){func(name)}  
  18. spark: (func: String => Unit, name: String)Unit  
  19.   
  20. spark有2个参数,一个是func,一个是name,输出是Unit  
  21. func有1个参数,String类型的,输出是Unit  
  22.   
  23. scala> spark((name:String)=>println(name),"Scala")   --传入匿名函数  
  24. Scala  
  25.   
  26. scala> spark((name)=>println(name),"Scala")   --类型推断,可以省略类型String  
  27. Scala  
  28.   
  29. scala> spark(name=>println(name),"Scala")   --参数只有1个,可省略括号  
  30. Scala  
  31.   
  32. scala> spark(println(_),"Scala")  --参数只使用1次,可省略参数名称,使用时用下划线代替  
  33. Scala  
  34.   
  35. scala> spark(println _,"Scala")   --参数只有1个,可省略括号  
  36. Scala  
  37.   
  38. scala> spark(println,"Scala")   --参数只使用1次,可省略参数名称  
  39. Scala  
  40.   
  41.   
  42. scala> //////////////////////  
  43.   
  44. scala> val arr = Array(1,2,3,4,5,6)  
  45. arr: Array[Int] = Array(1, 2, 3, 4, 5, 6)  
  46.   
  47. scala> arr.map(2*_)  
  48. res167: Array[Int] = Array(2, 4, 6, 8, 10, 12)  
  49.   
  50. scala> arr.map(2*_).foreach(println _)  
  51. 2  
  52. 4  
  53. 6  
  54. 8  
  55. 10  
  56. 12  
  57.   
  58. scala> arr.map(2*_).foreach(println)  
  59. 2  
  60. 4  
  61. 6  
  62. 8  
  63. 10  
  64. 12  
  65.   
  66. scala> arr.map(2*_).filter(_>6)foreach(println)  
  67. 8  
  68. 10  
  69. 12  

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/gdmzlhj1/article/details/50772284

猜你喜欢

转载自blog.csdn.net/weixin_40137479/article/details/79613212