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

本文通过具体示例介绍了Scala中函数的定义及使用,包括函数返回函数的概念及高阶函数的逐步推导过程,并展示了如何利用这些概念进行数组操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[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.youkuaiyun.com/gdmzlhj1/article/details/50772284
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值