Scala之旅-简介

Scala之旅-简介

简介

Scala是一门现代多范式编程语言,以一种简洁,优雅,类型安全的方式表达通用编程模式。它将面向对象和函数式语言十分自然地结合到了一起。

Scala是面向对象的

Scala中的每一个值(value)都是一个对象(object),从这个角度来看它是一门纯粹的面向对象的语言。对象的类型和行为是通过类(classes)特征(traits)来表达的。类是通过子类(subclassing)和一种灵活的基于混合的组合(mixin-based composition)机制来扩展的,这可以完全替代多重继承。

Scala是函数式的

Scala中的每一个函数(function)都是一个值(value),从这个角度来看它也是一门函数式语言。Scala提供了一种轻量级语法来定义匿名(anonymous)函数,它支持高阶(higher-order)函数,允许内嵌(nested)函数,还支持柯里化(currying)。Scala的case类以及内置的模式匹配(pattern matching)相当于很多函数式编程语言使用的代数类型(algebraic types)。单实例(Singleton)对象可以很方便地将非类成员函数聚合到一起。

更进一步,通过对提取器(extractor)对象的通用扩展,在右侧忽略序列(right-ignoring sequence)模式的帮助下,Scala模式匹配的概念可以轻易地扩展到对XML数据的处理。从这个角度而言,序列推导式(sequence comprehensions)对于查询的公式化表达很有用。这些特征使得Scala非常适合开发像web服务这种应用。

Scala是静态类型的

Scala具有表达类型系统(expressive type system),该系统以静态方式强制以一种安全并且一致的方式使用抽象化(abstractions)。Scala的类型系统具体支持:

本地类型推断机制(local type inference mechanism)使得用户在程序中不需要使用冗余的类型信息为程序做注解。综合而言,这些特征为编程抽象化的安全重用以及软件的类型安全扩展提供了强大的基础。

Scala是可扩展的

在实践中,特定领域的应用开发经常需要特定领域的语言扩展。Scala提供了一种对不同语言机制的独特组合方式,使得它可以很自然得以库的形式加入新语言的构件:

  • 任何方法都可以作为一个中缀或者后缀操作符来使用
  • 闭包(closures)根据预期类型(expected type,又做目标类型target typing)被自动构建

结合上面两个特征可以在不扩展语法,并且不使用类似宏的元编程工具的情况下,就可以很容易地定义新的声明。

Scala可以和JRE(Java 2 Runtime Environment)很好地交互。尤其是它和主流的面向对象的Java编程语言之间的交互非常流畅。像注释(annotations)和Java泛型这些最新的Java特征,在Scala中都有类似的对应机制。那些Scala具有而Java所不具有的特征,例如默认参数和指定参数(default and named parameters),仍然编译得尽量接近Java。Scala的编译模型与Java相同(分离编译separate compilation,动态类加载),并且允许访问数千个高质量的现成类库。

参考资料

本文译自Tour Of Scala – Introduction

下一篇:Scala之旅-基础

发表评论

电子邮件地址不会被公开。 必填项已用*标注