面向Java开发人员的Scala指南 - 面向对象的函数编程 - 编程入门网
ad.sleep(seconds * 1000)
}
}
def main(args: Array[String]): unit =
{
periodicCall(1, () =>
Console.println("Time flies... oh, you get the idea."))
}
}
面向Java开发人员的Scala指南 - 面向对象的函数编程(5)时间:2011-01-30 IBM Ted Neward这是函数语言中的公共主题:创建一个只做一件事情的高级抽象函数,让它接受一个代码块(匿名函数)作为参数,并从这个高级函数中调用这个代码块。例如,遍历一个对象集合。无需在 for 循环内部使用传统的 Java 迭代器对象,而是使用一个函数库在集合类上定义一个函数 — 通常叫做 “iter” 或 “map” — 接受一个带单个参数(要迭代的对象)的函数。例如,上述的 Array 类具有一个函数 filter,此函数在清单 7 中定义: 清单 7. Array.scala 的部分清单
清单 7 声明 p 是一个接受由 A 指定的泛型参数的函数,然后返回一个布尔值。Scala 文档表明 filter “返回一个由满足谓词 p 的数组的所有元素组成的数组”。这意味着如果我想返回我的 Hello World 程序,查找所有以字母 G 开头的命令行参数,则可以编写像清单 8 一样简单的代码: 清单 8. Hello, G-men!
此处,filter 接受谓词,这是一个隐式返回布尔值(startsWith() 调用的结果)的匿名函数,并使用 args 中的每个元素来调用谓词。如果谓词返回 true,则它将此值添加到结果数组中。遍历了整个数组之后,它接受结果数组并将其返回,然后此数组立即用作 “foreach” 调用的来源,此调用执行的操作就像它名字的含义一样:foreach 接受另一个函数,并将此函数应用于数组中的每个元素(在本例中,仅显示每个元素)。 不难想象等同于上述 HelloG.scala 的 Java 是什么样的,而且也不难发现 Scala 版本非常简短,也非常清晰。 结束语 Scala 中的编程如此地熟悉,同时又如此地不同。相似之处在于您可以使用已经了解而且钟爱多年的相同的核心 Java 对象,但明显不同的是考虑将程序分解成部分的方式。在面向 Java 开发人员的 Scala 指南 的第一篇文章中,我仅仅简单介绍了 Scala 的功能。将来还有很多内容尚待挖掘,但是现在让我们陶醉在函数化的过程中吧! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |