Scala:Object-Oriented Meets Functional
Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between.
Scala 是一门多范式的编程语言,一种类似 java 的编程语言 ,设计初衷是要集成面向对象编程和函数式编程的各种特性。
特性
面向对象特性
Scala 是一种纯面向对象的语言,每一个值都是对象。对象的数据类型以及行为由类和特征(Trait)描述。类抽象机制的扩展有两种途径。一种途径是子类继承,另一种途径是灵活的混入(Mixin)机制。这两种途径能避免多重继承的种种问题。
函数式编程
Scala 也是一种函数式语言,其函数也能当成值来使用。Scala 提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化 。Scala 的 Case Class 及其内置的模式匹配相当于函数式编程语言中常用的代数类型(Algebraic Type)。
更进一步,程序员可以利用 Scala 的模式匹配,编写类似正则表达式的代码处理 XML 数据。在这些情形中,顺序容器的推导式(comprehension)功能对编写公式化查询非常有用。
由于 JVM 不支持尾部递归,Scala 也不能完全支持尾部递归优化。不过,在简单的情况下,Scala 编译器可以把尾部递归优化成循环。