秉着简洁而不失完整的的原则,这章只把Scala主要语法和与Java不同的内容列出来,以后章节也如此,内容以简洁为主,太长了自己都被吓着了,也没耐心看下去。
1.Scala解释器使用,这里不做介绍,有IDE这玩意一般用不着。
2.基本数据类型
Java原始类型在scala包里都有对应的类。例如,scala.Boolean对应着Java的boolean。scala.Float对应着Java的float。当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。
3.定义变量
Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。与之对应的,var如同Java里面的非final变量。var可以在它生命周期中被多次赋值。
val msg1=”hello scala”
var msg2=”hello world”
仔细看上面定义的2个变量好像都没有类型声明,这是怎么回事呢?这就要说到Scala的类型推断(type inference),因为你用了一个字符串来初始化msg变量,Scala推断msg的类型是String。你也可以显式地定义类型,有些时候也应该这么做。显式的类型标注不但可以确保Scala编译器推断你倾向的类型,还有助于以后代码的阅读。
val msg : String=”hello scala” 与Java不同的是类型声明在变量后面,用一个”:”分隔。
4.定义函数
上面已经定义了变量,现在开始学习怎么定义一个函数
def max(x: Int, y: Int): Int = { //定义函数
if (x > y) x
else y
}
max(3,7) //调用函数
自己对照看与 java函数有什么不同,函数体只有一句的大括号可以省略写成 :
def max(x: Int, y: Int) = if (x > y) x else y
结果类型也去掉了,编译器类型推断可得出,尽管如此带上结果类型也是一个好习惯,便于其他人阅读代码。
Scala的Unit结果类型指的是函数没有返回有用的值。Scala的Unit类型比较接近Java的void类型,而且实际上Java里每一个返回void的方法都被映射为Scala里返回Unit的方法。因此结果类型为Unit的方法,仅仅是为了它们的副作用而运行
注:java里的i++和++i在scala里是行不通的。
本文来自云栖社区合作伙伴“开源中国”
本文作者:山海经