面向Java开发人员的Scala指南 - 包和访问修饰符 - 编程入门网
充当函数的对象)可以定义一个 apply 方法来提供类似于函数或方法的语义:
清单 10. 使用 Functor!
面向Java开发人员的Scala指南 - 包和访问修饰符(6)时间:2011-01-30 Ted Neward好奇的读者会想是什么使仿函数不同于匿名函数或闭包呢?事实证明,它们之间的关系相当明显:标准 Scala 库中的 Function1 类型(指包含一个参数的函数)在其定义上有一个 apply 方法。快速浏览一些为 Scala 匿名函数生成的 Scala 匿名类,您就会明白生成的类是 Function1(或者 Function2 或 Function3,这要看该函数使用了几个参数)的后代。 这意味着当匿名的或者命名的函数不一定适合期望设计方法时,Scala 开发人员可以创建一个 functor 类,提供给它一些初始化数据,保存在字段中,然后通过 () 执行它,无需任何通用基类(传统的策略模式实现需要这个类): 清单 11. 使用 Functor!
任何提供了被适当赋予了参数的 apply 方法的类,只要这些参数都按数字和类型排列了起来,它们都会在被调用时运行。 结束语 Scala 的打包、导入和访问修饰符机制提供了传统 Java 编程人员从未享受过的更高级的控制和封装。例如,它们提供了导入一个对象的选择方法的能力,使它们看起来就像全局方法一样,而且还克服了全局方法的传统的缺点;它们使得使用那些方法变得极其简单,尤其是当这些方法提供了诸如本系列早期文章(“Scala 控制结构内部揭密”)引入的虚构的 tryWithLogging 函数这样的高级功能时。 同样,“应用” 机制允许 Scala 隐藏函数部分的执行细节,这样,编程人员可能会不知道(或不在乎)他们正调用的东西 事实上不是一个函数,而是一个非常复杂的对象。该机制为 Scala 机制的函数特性提供了另一个方面,当然 Java 语言(或者 C# 或 C++)也提供了这个方面,但是它们提供的语法纯度没有 Scala 的高。 这就是本期的全部内容;在下一期发布前,请尽情欣赏! 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |