首页 > 其他 > 详细

scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数

时间:2019-03-14 23:03:07      阅读:233      评论:0      收藏:0      [点我收藏+]

//定义一个函数

scala> def multiple(func: Int => Int, a :Int) = {func(a)}
multiple: (func: Int => Int, a: Int)Int

//调用

scala> multiple((a:Int) => a+1,5)
res225: Int = 6

//自动类型推断,可以省略参数类型

scala> multiple((a) => a+1,5)
res229: Int = 6

//只有一个参数,可以省略圆括号

scala> multiple(a => a+1,5)
res230: Int = 6

//在执行中只被调用一次,参数可以用 _ (下划线)代替

scala> multiple(_+1,5)
res231: Int = 6

一个下划线可以代表这么大的信息量。。。也是挺有意思的。

================================================================

//把变量a换成一个常数 3,那么函数只要有一个函数参数就可以了

scala> def multiple(func: Int => Int) = {func(3)}
multiple: (func: Int => Int)Int

//调用, _ 就代表 3 

scala> multiple(_*2)
res232: Int = 6

scala> multiple(_+100)
res234: Int = 103

scala> multiple(1000+_)
res235: Int = 1003

乍一看 multiple(func: Int => Int) = {func(3)} 这个函数有点懵,不知道在嘎哈。 分析一下,明白了。

然后发现其实这个函数很好理解。就是要对 3 做点啥。函数体中就是直接在匿名函数中传入了一个固定的常量3作为参数而不再接收变量。

scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数

原文:https://www.cnblogs.com/rabbit624/p/10533874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!