|NO.Z.00055|——————————|BigDataEnd|——|Hadoop&Scala.V03|——|Scala.v03|模式匹配和样例类|匿名函数|占位符|

一、匿名函数与占位符
### --- 匿名函数与占位符

~~~     函数没有名字就是匿名函数;
~~~     匿名函数,又被称为 Lambda 表达式。 Lambda表达式的形式如下:
~~~     (参数名1: 类型1, 参数名2: 类型2, ... ...) => 函数体
### --- 编程示例

~~~     定义匿名函数
scala> (x: Int) => x + 1
res0: Int => Int = <function1>
    
~~~     函数没有名字,在集成开发环境中是无法被调用的
scala> res0(10)
res1: Int = 11

scala> val list = (1 to 10).toList
lst: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
~~~     将匿名函数作为参数传递给另一个函数
scala> list.map((x: Int) => x + 1)
res2: List[Int] = List(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

~~~     x一定是Int类型,这里可以省略
scala> list.map((x) => x + 1)
res3: List[Int] = List(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

~~~     只有一个参数,小括号可以省略
scala> list.map(x => x + 1)
res4: List[Int] = List(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

~~~     使用占位符简化函数字面量
scala> list.map(_ + 1)
res5: List[Int] = List(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
~~~     实现将List中的每个元素*2 + 1,但是出错了
scala> list.map(_ + _ + 1)
<console>:13: error: missing parameter type for expanded function ((x$1, x$2) =>x$1.$plus(x$2).$plus(1))

~~~     这样是可行的
scala> list.map(2 * _ + 1)

~~~     通过reduce这个高阶函数,将list列表中的元素相加求和
scala> list.reduce((x,y) => x + y)
res0: Int = 55

~~~     使用占位符简化函数字面量
~~~     第一个下划线代表第一个参数,第二个下划线代表第二个参数
scala> list.reduce(_ + _)
res1: Int = 55
### --- 多个下划线指代多个参数,而不是单个参数的重复运用

~~~     第一个下划线代表第一个参数
~~~     第二个下划线代表第二个参数
~~~     第三个……,如此类推

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(17)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示