一、Scala介绍
Scala特性
面向对象:Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。
面向函数:Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。
静态类型:Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。
并发性:Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。
二、基本语法
命名:
程序文件名 - 程序文件的名称应该与对象名称完全匹配(新版本不需要了,但建议保留这种习惯)。
标识符:应该避免使用以下划线结尾的标志符以避免冲突。
字面量标志符为使用"定义的字符串,比如 `x` `yield`。
符号字面量: '<标识符> ,这里 <标识符> 可以是任何字母或数字的标识(注意:不能以数字开头)。这种字面量被映射成预定义类scala.Symbol的实例。如: 符号字面量 'x 是表达式 scala.Symbol("x") 的简写。
如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。
Scala默认访问修饰符是public,Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。
Scala作用域保护:private[x] 或 protect[x],x指代某个所属的包、类或单例对象,private[x]读作“这个成员除了对[…]中的类或[…]中的包中的类及它们的伴生对像可见外,对其它所有类都是private”。这种技巧在横跨了若干包的大型项目中非常有用