scala是以实现scaleable language为初衷设计出来的一门语言。官方中,称它是object-oriented language和functional language的混合式语言。并且,scala可以和java程序无缝拼接,因为scala文件编译后也是成为.class文件,并且在JVM上运行。不过,我更关心的是它的scaleable(扩展性)。一门语言到底怎样才算有扩展性呢?对语言而言什么是它的扩展性呢?个人拙见,认为语言的扩展性可能包括两个方面:1、语言本身的扩展性2、由此语言写出来的程序的扩展性对于第一点,在scala的介绍中提到有些developer可以用scala来定义自己的Domain Specific Language。我想,这一点也许就体现了scala语言本身的扩展性,即它有潜力可以被加工为另一门可用在专门领域中的语言(或许是通过增加某些模型,或某些操作等)。对于第二点,感触最深的就是马上要见到的Tuple。曾经在做一个项目时,希望一个函数可以多返回两个参数,而不得不重新定义一个JavaBean(继承了它的前辈以保留之前的其他返回值),但是这样导致上层代码一片混乱,一会儿是调用原先的BaseBean,一会儿又是调用新的Bean。如果Java中也能有类似Tuple的东西就太方便了。文中将描述三个内容:Tuple -可以将不同类型的数据存储在一个数组中singleton objects - scala中没有静态方法和属性,全部由singleton object(单例对象)来替代trait - scala中的类interface物,但是可以拥有方法体,并且可以在类实例化时混入,而不需为了包装某个类而产生子类Tuples  数组
Like Lists, tuples are immutable, but unlike Lists, tuples can contain different types of elements. Thus whereas a list might be a List[Int] or a List[String], a tuple could contain both an Int and a String at the same time. Tuples are very useful, for example, if you need to return multiple objects from a method. Whereas in Java, you would often create a JavaBean-like class to hold the multiple return values, in Scala you can simply return a tuple.val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)