博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala函数与对象
阅读量:6721 次
发布时间:2019-06-25

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

  hot3.png

函数在Scala语言里面也是一个对象,也许这对于Java程序员来说这比较令人惊讶。于是吧函数作为参数进行传递、把它们存贮在变量中、或者当作另一个函数的返回值都是可能的。吧函数当成值进行操作是函数型编程语言的基石。

为了解释为什么吧函数当作值进行操作是十分有用的,我们来考虑一个计时器函数。这个函数的目的是每隔一段时间就执行某些操作。那么如何吧我们要做的 操作传入计时器呢?于是我们想吧他当作一个函数。这种目前的函数对于经常进行用户界面编程的程序员来说是最熟悉的:注册一个回调函数以便在事件发生后得到 通知。
在下面的程序中,计时器函数被叫做oncePerSceond,它接受一个回调函数作为参数。这种函数的类型被写作 () => Unit ,他们不接受任何参数也没有任何返回(Unit关键字类似于C/C++中的void)。程序的主函数调用计时器并传递一个打印某个句子的函数作为回调。换 句话说,这个程序永无止境的每秒打印一个“time flies like an arrow”。
object Timer { def oncePerSecond(callback: () => Unit) { while (true) { callback(); Thread sleep 1000 } } def timeFlies() { println("time flies like an arrow...") } def main(args: Array[String]) { oncePerSecond(timeFlies) } }

注意,我们输出字符串时使用了一个预定义的函数println而不是使用System.out中的那个。

更多精彩内容请关注:

关注超人学院微信二维码:

转载于:https://my.oschina.net/crxy/blog/466101

你可能感兴趣的文章
pwn学习(1)
查看>>
复习常用算法_冒泡算法
查看>>
reading/writing files in Python
查看>>
LCA 树链剖分
查看>>
JSP下载txt 和 Excel两种文件
查看>>
写在年尾
查看>>
找水王
查看>>
路过Haxe
查看>>
从零开始学java (继承)
查看>>
[技]如何在 notepad++ 里面使用正则表达式进行替换
查看>>
为什么会有软件测试这一栏目?
查看>>
java初级笔记
查看>>
2.2.4 FrameLayout(帧布局)
查看>>
android 学习随笔八(异常处理总结)
查看>>
验证码
查看>>
SQL的几种连接:内连接、外连接(左连接、右连接、全连接)
查看>>
学习记录:《高性能javascript》【持续更新】
查看>>
布隆过滤器的改进及其应用实践
查看>>
一步步学习ASP.NET MVC3 (9)——JsonReslt,JavaScript,@Ajax
查看>>
LINQ系列:Linq to Object生成操作符
查看>>