scala:函数即对象
来源:互联网 发布:擎洲软件 编辑:程序博客网 时间:2024/05/16 08:22
在Scala里,我们经常讨论对象-函数编程。它表示什么呢?函数究竟是什么?
函数是一系列的trait。确切地说,有一个参数的函数是Function1 trait的一个实例。这个trait定义了我们之前学到的apply()
的语法糖,它允许你像调用函数一样调用对象。
1
2
3
4
5
6
7
scala> object addOne
extends
Function1[Int, Int] {
| def apply(m: Int): Int = m +
1
| }
defined module addOne
scala> addOne(
1
)
res2: Int =
2
在Scala里有Function1到22。为什么是22?这是一个任意的魔数。我从来没有遇到需要22个参数的函数,所以这个数字还是很有效的。
apply的语法糖使得对象和函数的编程能够组合在一起。你可以把对象作为参数进行传递,同时也可以把它们当作函数使用,而实际上函数也只不过是类的实例。
那这样是不是意味着每次你在类里定义一个方法,那么你就会得到Function的一个实例呢?不,类里的方法仅仅是普通的方法。在repl里单独定义的方法才是Function的实例。
类也可以继承函数,然后这些类的实例就可以通过()来调用。
1
2
3
4
5
6
7
8
9
10
scala>
class
AddOne
extends
Function1[Int, Int] {
| def apply(m: Int): Int = m +
1
| }
defined
class
AddOne
scala> val plusOne =
new
AddOne()
plusOne: AddOne =
scala> plusOne(
1
)
res0: Int =
2
extends Function1[Int,Int]
的一种比较好的简写是extends (Int => Int)
1
2
3
class
AddOne
extends
(Int => Int) {
def apply(m: Int): Int = m +
1
}
1
0 0
- scala:函数即对象
- 【Scala】头等函数与函数即对象
- scala之函数式对象
- scala中的函数、变量、集合、对象---scala学习笔记(1)
- Scala学习(一):Scala中的函数式对象
- Scala-面向对象的函数编程
- Coursera Scala 4-1:函数作为对象
- Scala简史 对象函数式编程
- 仿函数,即函数对象,的一个简单例子
- Scala对象
- Scala 对象
- Scala对象
- scala对象
- Scala对象
- Scala讲座:将函数作为第一类对象来处理
- IBM scala(一)-----面对对象的函数编程
- Programming In Scala笔记-第六章、函数式对象
- Scala 函数
- java流操作对文件的分割和合并
- 关于《火星救援》
- 在C语言中执行python的环境调试和问题解决
- 第十三周项目五 拓扑排序算法验证
- Big Number
- scala:函数即对象
- C语言基础IO操作
- 女性其实最需要三种蔬菜!赶紧看看哟~~~
- ztree+java后台取数据(包括异步)生成树状图
- Qt QWidget 类简介--Qt 类简介专题(三)
- AVL树的实现
- 【博弈-找规律】HDOJ 取石子游戏 2516
- Qt Object 类简介--Qt 类简介专题(二)
- 杭电1591 hdu 1591 Encoded Love-letter