初识Scala

开门见山,Scala是真心的复杂、难学,但学着上瘾。因为它有太多吸引人的特性,超传统Java好几条街,即使Java 8也赶不上。(一点题外话,现在Java语言本身的特性,甚至连C++1x的也赶不上,发展的太慢,没有创新)。

简单说说有哪些有趣的特性。

强类型语言

这算不上什么特性,只是某种理念,但我觉得非常重要。类型安全的语言让人写起来的放心,日后也更容易维护。

函数对象

Scala本身是一门FP语言,函数的地位是第一位,非常简单就可定义函数,且函数可以做为对象传递给其他函数或由其他函数生成,非常方便,不再需要提前定义接口。

相当强大的灵活性吧。这个例子还展示了一些特性

  • 函数的参数可以有默认参数,再不用多个函数重载版本
  • 使用type定义类型的别名,很像C++11里的using

Match Expression

首先把它理解成表达式,不是简单的流程控制。这个特性比switch..case强大太多了。

这部分的语法还真是挺复杂的,有兴趣的找找Tutorial学习一下,不在这里一一展示了。

Objects, Case Classes, Traits

面向对象方面,除了传统的Java特性之外,还新添加了几个新的成员。

  • Object就是JVM上的一种单例实现,Lazy initialization。
  • Case Class可以看成一种语法糖,可以生成Instantiable的类,并自动生成一些常用的函数,如apply(), copy(), equals()等。
  • Trait则是为多继承准备的。从OO的角度看,多继承是完全合情合理的,只是实现上会有很多问题,所以设计从语言层面去掉了这种可能。

此外Scala还有很多的特性和超多的语法糖,以后慢慢再续上。