博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数
阅读量:5263 次
发布时间:2019-06-14

本文共 884 字,大约阅读时间需要 2 分钟。

//定义一个函数

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作为参数而不再接收变量。

转载于:https://www.cnblogs.com/rabbit624/p/10533874.html

你可能感兴趣的文章
Web Api 利用 cors 实现跨域
查看>>
hdu 3938 并查集
查看>>
instanceof
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
C# GC 垃圾回收机制
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>