scala的特别之处
来源:互联网 发布:大数据平台功能设计 编辑:程序博客网 时间:2024/04/29 08:14
对于java程序员来说,最新鲜的一点是function也是object。这意味着function也可以当成value一样进行传递。Function are also object in Scala.It is therefore possible to pass funjction as arguments, to store them in variables, and to return them from other functions.
对C语言还有印象的人应该还记得call-back function(回调函数)这个东西。他其实就相当于把函数当做值来传递,不过在C中传递的是这个函数的地址。
object Timer{def once PerSecond(callback:()=>Uint){while(ture){callback();Thread sleep 100}}def timeFlies(){println("time flies like an arrow...")}def main(arg:Array[String]){oncePerSecond(timeFlies)}}
可以看出 timeFlies函数被当做回调函数注册给了oncePerSecond.这种方式跟c很像,不过,这里面其实有点浪费,因为timeFiles函数其实根本不需要名字,因为它只在一个特定的地方用到了。如果把它想象成“一团东西”,那么只有把“这团东西”塞到他应该呆的位置即可,根本不会有人关心它叫什么名字。
这样,就产生了anonymous function(匿名函数),如下:
object TImeAnonymous{
def oncePerSecond(callback: ()=>Unit){
while(ture) { callback();Thread sleep 1000}
}
def main(args:Array[String]){
oncePersecond( () => println("time flies likes an arrow"))
}
}
可以看到 ()=>println("time flies like an arrow") 就是一个匿名函数,被当成是一个object ,直接塞给了oncePerSecond,这个做法跟javascript的匿名函数很像。
总结:Scala在java的基础之上,将面向对象的“万物皆为对象”的思想更推进了一步,把function也视为object,允许它作为参数出现,也允许他被赋值给一个变量,甚至还运行它作为一个返回值来进行回馈。
- scala的特别之处
- Perl的特别之处
- 字符指针的特别之处
- 苍蝇眼睛的特别之处
- 数字101的特别之处
- Ruby语言的特别之处
- JAVA细节上的特别之处
- 苍蝇眼睛的特别之处
- 函数的几个特别之处
- NSString的length方法特别之处
- LightGBM算法的特别之处
- const特别之处
- C中数组的特别之处 二维数组学习体会
- 火狐(Firefox)下UploadFile控件的特别之处
- Win7/Vista Hook CreateProcess 的特别之处
- 笨木头Lua专栏 函数的几个特别之处
- 女程序员职业发展的特别之处
- 四大组件-广播接受者的特别之处
- 求最大连续递增数字串
- 控制循环打印输出
- 分页查询--前台HTML+后台asp.net代码
- db2跨数据库访问表
- Linux查看磁盘分区等命令和相关工具介绍
- scala的特别之处
- android返回二次退出
- js chart画图表
- linux设置文件权限(find+chmod)
- Struts2与DWR无法在项目中共存的解决方案
- 游戏开发新手入门之调色板和像素
- python 中lambda
- unix环境高级编程编译方法 -apue最简单编译方法(第二版)
- 1102 Constructing Roads