这是一篇老的文章:scala syntax primer,从Java语法角度来看Scala语法,非常方便Java程序员转变到Scala上。
基础部分:
1. Scala的类名称无需象Java那样要与文件名一致,可以将任何Scala类放入任何Scala文件中。
2. 分号是可选,不一定象Java那样每行一个分号结束,如果需要将多个statements放在一行,需要用分号分离。
3.每个值都是对象,没有Java的原始类型,既然都是对象,都可以调用其中方法,如123是个值数字,在Java中是int类型,但是Scala中可以123.toString()。
4.Scala有显著的转换Mixin,你可以调用原来类中不存在的方法。
5.Scala遵循统一访问原则:"Uniform Access Principle" 意味着变量和无参数的函数都是以同样方式访问,只要用def替代val 或var即可(后者是变量的两种类型。)
6. Scala能够直接支持XML. 将scala.xml.Elem 分配给变量val x:
val x = <head><title>The Title</title></head>
也可以混合使用:
val title = "The Title"
val x = <head><title>{ title }</title></head>
Keywords关键词修饰语法部分:
1.没有Java的static关键词. 在Scala中使用Object来替代static,Object是单态的。
2.Scala没有break 或 continue. 通过函数编程风格来降低这种要求(banq注:也许Scala难点所在)。
3.Access modifiers such as protected and private can include a scope in square brackets, such as private[this] or protected[MyPackage1.MyPackage2]. The default access is public.
4. val 是用于不可变变量,相当于Java中增加了final,而var是可变变量
5.一个import可以导入多个:
import java.text.{DateFormat,SimpleDateFormat}
6. 导入符合可以改名:
import java.util.{Date=>UDate}
import java.sql.{Date=>SDate}
7. 如果导入改名为_, 除了规定的符号,其他都什么不导入:
import java.util.{Date=>_,_}
8. abstract 只用于抽象class和 traits. 对于函数 val或var的抽象表达方式,你只需要忽略=后面的body部分即表示他们是抽象的
9.当需要覆盖超级类中一个方法时,覆盖的修改器必须指定,如果没有指定,将不会覆盖。
10.新的修饰语: lazy, implicit
[该贴被banq于2012-04-22 10:22修改过]