对于支持并发和分布式处理、高可扩展、基于组件的应用程序来说,Scala的功能是很强大的。它利用了面向对象和函数式程序设计的优点。这种基于Java虚拟机的语言在宣布Twitter正使用它时受到了最多的冲击。如果使用正确,Scala可以大量减少应用程序对代码的需求。
对于Scala编程, 我们收集了这些常见代码编写中的陷阱。这些技巧来自于Daniel Sobral,一个曾参加过FreeBSD项目和Java软件开发工程的Scala狂热爱好者。
1. 语法错误
认为 “yield” 像 ”return” 一样。有人会这样写:
2. 误用和语法错误
滥用scala.xml.XML.loadXXX。这个的语法分析器试图访问外部的DTD、strip组件或类似的东西。在scala.xml.parsing.ConstructingParser.fromXXX中有另一个可选的语法分析器。同时,在处理XML时忘记了等号两端的空格。
3. 用法错误
为那些根本不是无关紧要的应用加入Application特征。
4. 用法错误
试图模式匹配一个字符串的正则表达式,而又假定该正则表达式是无界的。
5. 用法错误
把var和val认为是字段(fields):
Scala强制使用统一访问准则(Uniform Access Principle),这使得我们无法直接引用一个字段。所有对任意字段的访问只能通过getters和setters。val和var事实上只是定义一个字段,getter作为val字段,对于var则定义一个setter。
6. 用法错误
忘记类型擦除(type erasure)。当你声明了一个类C[A]、一个泛型T[A]或者一个函数或者方法m[A]后,A在运行时并不存在。这意味着,对于实例来讲,任何参数都将被编译成AnyRef,即使编译器能够保证在编译过程中类型不会被忽略掉。