-
变量
所有的Java原始类型在scala包里都有对应的类。
eg:
scala.Boolean对应着Java的boolean。
scala.Float对应着Java的float。
当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。
Java中变量的类型指定在其名称之前,与之不同的是,Scala里变量的类型在其名称之后,用冒号分隔
val和var。
val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。
eg:
val msg = "Hello, world!"
val msg : String = "Hello, world!"
var如同Java里面的非final变量。var可以在它生命周期中被多次赋值
eg:
var greeting = "Hello, world!"
var greeting : String = "Hello, world!"
Scala变量特性:
类型推断:type inference,能自动理解你省略的类型的能力
val msg = "Hello, world!"
-
函数
def 函数名 ([变量名:类型[,变量名:类型]]) [: 结果类型] = { 逻辑语句 }
函数的定义用def开始。函数名,括号里带有冒号分隔的参数列表。
结果类型:如果函数是递归的,必须显式地定义函数结果类型
eg:
def max(x: Int, y: Int): Int = {
if (x > y) x else y
}
既不带参数也不返回有用结果的函数定义
eg:
def greet() = println("Hello, world!")
当你定义了greet()函数,解释器会回应一个greet: ()Unit。
“greet”当然是函数名。
空白的括号说明函数不带参数。
Unit是greet的结果类型。Unit类型比较接近Java的void类型,而且实际上Java里每一个返回void的方法都被映射为Scala里返回Unit的方法
PS:
每个函数参数后面必须带前缀冒号的类型标注,因为Scala编译器没办法推断函数参数类型
scala用 if (x > y) x else y 代替了 java中的三目运算(“(x > y) ? x : y)