变量值的函数和借贷函数

Scala中,函数是“头等公民”,几乎所有的操作都是以函数形式进行。同样的,能够在变量中存放函数(听上去很神奇吧)。示例如下:


本段代码将ceil函数赋值给fun变量,ceil后面的_表名这是一个函数,而不是碰巧忘记给它传参。

 

scala中,不需要为每个函数命名,这种没有命名的函数叫做匿名函数。如何进行匿名函数的定义呢?示例如下:

(x:Double) => 3 * x

这就是一个匿名函数。就好像在scala中能够把函数赋值给变量一样,我们可以把匿名函数赋值给变量:

valtriple = (x: Double) => 3 * x

这样的方式跟使用def定义函数一样:

deftriple(x: Double) = 3 * x

但是好处就是能够不给函数命名,就能直接将它传递给另一个函数。这种方法在使用mapfilter等函数时非常常用:



由于scala有可以将函数作为参数传递给函数的特性,故从中引出了一种简单的封装模式——借贷模式。代码示例如下:


在此代码中,我们将BufferedWriter进行了封装,只要调用autoWrite函数,传入适当的参数,就可以完成字符串写入文件,而且不需要关闭BufferedWriter。使用借贷模式是对系统资源操作的封装,为了防止资源不被安全释放,其次用户不用考虑资源来自何处,如何归还等问题,只需要使用就行了。

posted on 2017-02-28 19:56  为尊严而奋斗  阅读(197)  评论(0编辑  收藏  举报

导航