Scala之旅:前言

Scala之旅
 
Scala是一个现代的多范式编程语言,可将通用的编程模式以一种简明、简练并且类型安全的方式表达。Scala语言平滑的继承了面向对象以及函数式语言的特性。
 
Scala是面向对象的
 
Scala是纯粹的面向对象语言,因为Scala中的每一个值(value)都是一个对象(object)。对象的类型(type)与行为(behaviour)通过类(classes)与特征(traits)来描述。类借由子类(subclassing)以及通过灵活的基于混入的类合成(mixin-based composition)机制代替多重继承(multiple inheritance)而实现了扩展。
 
Scala是函数式的
 
Scala同时也是函数式语言,因为每一个函数(function)都是一个值(value)。Scala提供了一个轻量级语法用于定义匿名函数(anonymous function)。它支持高阶函数(higher-order function),允许内嵌函数(nested function),并支持柯里化(currying)。Scala的case类以及其内置的模式匹配(pattern matching)相当于在很多函数式语言中使用的代数类型(algebraic type)。
 
更进一步,程序员可以利用Scala模式匹配的概念,在右侧忽略序列模式(right-ignoring sequence pattern)(译者注:此为Scala的正则表达式)的帮助下处理XML数据。从这个角度而言,序列推导式(sequence comprehensions)对于编写公式化查询非常有用。这些特性使得Scala成为开发诸如Web服务等应用的一个理想选择。
 
Scala是静态类型的
 
Scala具备表达类型系统(expressive type system),该系统以静态方式强制抽象化的使用以一种安全并且一致的形式进行。这个类型系统具体支持:
  • 泛型类(generic classes)
  • 型变注释(variance annotations)
  • 类型继承结构的上限和下限
  • 把内置类和抽象类型作为对象成员
  • 复合类型(compound types)
  • 指定类型的自我引用
  • 视图
  • 多态方法(polymorphic methods)
本地类型推断(local type interence)机制令程序员无需使用过剩的类型信息为程序做注解。综合而言,这些特性为编程抽象化的安全重用以及软件的类型安全扩展提供了强大的基础。
 
Scala是可扩展的
 
实际开发中,特定领域(domain-specific)应用的开发往往需要特定领域语言(DSL)的扩展。Scala将语言机制独特的融合到一起,使得增添新的语言构成可以通过库的形式简单而平滑的实现:
  • 任意方法都可以被当做infix或postfix操作符来使用
  • 闭包(closure)被自动创建,视期待类型(expected type,又做目标类型target typing)而定
将两种特性一起使用有助于在不扩展语法并不使用类似宏的元编程功能的情况下定义新的声明。
 
Scala可在Java与.NET平台上互操作
 
Scala与当下流行的JRE有着良好的互操作性。具体来说,Scala与主流的面向对象的Java编程语言有着平滑的交互。Scala的编译模型与Java一样(分离编译,动态类加载),并可以访问上千现成的高质量类库。对.NET框架(CLR)也同样支持。




   本文转自lazycai 51CTO博客,原文链接:http://blog.51cto.com/lazycai/228079,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值