Ruby高手点评Scala编程语言十大绝招

发表于:2011-3-01 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:司马牵牛    来源:51Testing软件测试网采编

分享:

  对于第一种情况,模式 Name(first, last) 嵌套在模式 Address(…) 中。 其中的 last 值,被传递到 Name 构造函数,然后进行提取,因此在箭头右侧的表达式中是可用的。

  那么,

  模式匹配的意义

  为什么你需要模式匹配?我们都会有复杂的数据。如果我们坚持严格的面向对象编程,那么我们就不愿去关注数据树的内部情况。相反,我们想要调用方法,让方法来做这些事情。如果我们有能力完成这件事,就不会非常需要模式匹配,因为方法满足了我们的要求。但是,很多时候对象没有我们所需的方法,并且我们不能(或不愿)为对象添加新的方法。

  因此,模式匹配被认为是一种获得扩张性的有效方法,并且,它还为该问题提供了一种不错的解决方案,访问者设计模式所导致的冗长除外。

  不管怎样,强烈推荐你看看上面所提到的文章中”扩展性的两个方向“(Two directions of extensibility)那个小节。

  简单的 DSL(特定领域语言)

  编写 DSL,Scala 是一个很好的选择。事实上,Scala 适用于内部和外部 DSL。在这篇文章中,你可以找到一些使用 Ruby 和 Scala 编写内部 DSL 的特点比较。下面这篇文章也很棒,是关于使用 Scala 编写内部 DSL 的:Boolean Algebra Internal DSL in Scala (aka fun with Unicode names )。

  此外,对于外部 DSL,Scala 也应该是首选语言,背后的原因是解析器组合子库(parser combinator lib),它让为新语言编写编译器成为一件很酷的事。

  与 Java 代码之间的互操作性

  在 JVM 上的实现 Scala 的程序可以无缝地与 Java 平台整合,很多 Scala 类型实际上都编译为 Java 类型,因此,用户可以放心地使用 Java 类型。而且,你也可以混合地使用 JVM 语言来编程,如:JRuby、Groovy、Clojure 等。这里有一篇不错的文章,提供了这种示例。

  学习型语言

  我有两个习惯,在 Scala 的学习过程中,我坚持了这两个习惯:

  ◆遇到新的技术术语,访问维基百科,理解更多信息;比如 Function literal(文本函数)、Referentially transparent(引用透明度)、Partial function(偏函数)、Currying(科里华),还有很多其他术语。

  ◆参考我对其他语言的理解,检查这些术语的涵义是否实现。

54/5<12345>
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号