面向Java开发人员的Scala指南 - Scala控制结构内部揭密 - 编程入门网
ash; 创建自己的语言结构。
那些通过死读书学习语言的书呆子会发现一件有趣的事:while 循环(Scala 中的一个原语结构)可能只是一个预定义函数。Scala 文档以及假设的 “While” 定义中对此进行了解释说明:
上述语句指定了一个表达式,该表达式产生了一个布尔值和一个不返回任何结果的代码块(Unit),这正是 while 所期望的。 扩展这些代码行很容易,并且可以根据需要使用它们,只需导入正确的库即可。正如前面提到的,这是构建语言的综合方法。在下一节介绍 try 结构的时候,请将这一点牢记于心。 再三尝试 try 结构允许编写如下所示代码: 清单 8. 如果最初没有获得成功……
清单 8 中的代码与 清单 2 或 清单 3 中 if 示例中的代码相差甚远。实际上,它比使用传统 Java 代码编写更具技巧,特别是在您想捕获不可变位置上存储的值的时候(正如我在 清单 4 中最后一个示例中所做的那样)。这是 Scala 的函数特性的又一个优点! 清单 8 中所示的 case ex: 语法是另一个 Scala 结构(匹配表达式)的一部分,该表达式用于 Scala 中的模式匹配。我们将研究模式匹配,这是函数语言的一个常见特性,稍后将介绍它;现在,只把它看作一个将用于 switch/case 的概念,那么哪种 C 风格的 struct 将用于类呢? 现在,再来考虑一下异常处理。众所周知,Scala 支持异常处理是因为它是一个表达式,但开发人员想要的是处理异常的标准方法,并不仅仅是捕获异常的能力。在 AspectJ 中,是通过创建方面(aspect)来实现这一点的,这些方面围绕代码部分进行联系,它们是通过切入点定义的,如果想让数据库的不同部分针对不同种类异常采取不同行为,那么必须小心编写这些切入点 —— SQLExceptions 的处理应该不同于 IOExceptions 的处理,依此类推。 在 Scala 中,这只是微不足道的细节。请留神观察! 清单 9. 一个自定义异常表达式
面向Java开发人员的Scala指南 - Scala控制结构内部揭密(5)时间:2011-01-30 Ted Neward与前面讨论过的 While 结构类似,tryWithLogging 代码只是来自某个库的函数调用(在这里,是来自同一个类)。可以在适当的地方使用不同的主题变量,不必编写复杂的切入点代码。 此方法的优点在于它利用了 Scala 的捕获一级结构中横切逻辑的功能 —— 以前只有面向方面的人才能对此进行声明。清单 9 中的一级结构捕获了一些异常(经过检查的和未经检查的都包括)并以特定方式进行处理。上述想法的副作用非常多,惟一的限制也许就是想象力了。您只需记得 Scala 像许多函数语言一样允许使用代码块(aka |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |