Scala:当需要函数参数类型时?
发布时间:2020-12-16 09:23:59 所属栏目:安全 来源:网络整理
导读:Scala中可以定义多种功能,这些功能会在需要何种功能参数类型时产生混淆.我通常从最简单的可能定义开始,直到编译器错误消失为止.我宁愿真正了解这是如何工作的. 例如: _ + _(x,y) = x + y(x: Int,y: Int) = x + ydef sum(x: Int,y: Int) = x + y // as point
Scala中可以定义多种功能,这些功能会在需要何种功能参数类型时产生混淆.我通常从最简单的可能定义开始,直到编译器错误消失为止.我宁愿真正了解这是如何工作的.
例如: _ + _ (x,y) => x + y (x: Int,y: Int) => x + y def sum(x: Int,y: Int) = x + y // as pointed out,this is a method,// which not a function 获得文档链接的积分. 解决方法
那么有一些角落的情况,如:递归方法必须明确键入,但通常的经验法则如下:类型必须来自某个地方.
他们来自参考部分: val function: (Int,Int) => Int = _ + _ 或从对象部分: val function = (x: Int,y: Int) => x + y 不重要(在Scala!) 我知道你的问题是关于函数,但下面是一个类似的示例来说明Scala的类型推断: // no inference val x: HashMap[String,Int] = new HashMap[String,Int]() val x: HashMap[String,Int] // object inference val x: HashMap[String,Int] = new HashMap() val x: HashMap[String,Int] = new HashMap val x: HashMap[String,Int] = HashMap() // factory invocation // reference inference val x = new HashMap[String,Int]() val x = new HashMap[String,Int] val x = HashMap[String,Int]() // factory invocation // full inference val x = HashMap("dog" -> 3) 编辑根据要求,我添加了高阶函数的情况. def higherOrderFunction(firstClassFunction: (Int,Int) => Int) = ... 可以这样叫: higherOrderFunction(_ + _) // the type of the firstClassFunction is omitted 但是,这不是一个特例.明确提到了引用的类型.以下代码说明了一个类似的例子. var function: (Int,Int) => Int = null function = _ + _ 这大致相当于高阶函数的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 颜色 – navbar颜色在Twitter Bootstrap
- Bootstrap框架使用iframe及jQuery中load方法导致js失效问题
- 在运行带有“!”的命令时,如何使vim使用与登录shell相同的
- 前端开发框架Bootstrap和Knockout.js
- Bootstrap字体图标(glyphicons)
- scala – 值foreach不是Int的成员?
- Scala创建列表[Int]
- scala – 使用selenium hd在play框架测试中设置会话cookie
- Vim:Ruby和HTML omnicomplete没有显示本地方法/变量
- 使用KeyboardInterrupt异常捕获SIGINT在终端中工作,而不是在