第一步:定义变量
Scala 定义了两种类型的变量 val 和 var,val 类似于 Java 中的 final 变量,一旦初始化之后,不可以重新复制(我们可以称它为常变量)。而 var 类似于一般的非 final 变量。可以任意重新赋值。
比如定义一个字符串常变量:
var msg = "hello world";
这个表达式定义了一个 msg 变量,为字符串常量。它的类型为 string (java.lang.string)。 可以看到我们在定义这个变量时并不需要像 Java 一样定义其类型,Scala 可以根据赋值的内容推算出变量的类型。这在 Scala 语言中成为 “type inference”。当然如果你愿意,你也可以采用和 Java 一样的方法,明确指定变量的类型,如:
var msg : String = "hello world";
不过这样写就显得不像 Scala 风格了。此外 Scala 语句也不需要以分号结尾。
第二步:定义函数
Scala 既是面向对象的编程语言,也是面向函数的编程语言,因此函数在 Scala 语言中的地位和类是同等第一位的。下面的代码定义了一个简单的函数求两个值的最大值:
def max (x: Int , y: Int): Int = { if(x > y) x; else y; }
Scala 函数以 def 定义,然后是函数的名称(如 max),然后是以逗号分隔的参数。Scala 中变量类型是放在参数和变量的后面,以“:”隔开。这种做的一个好处是便与 “type inference”。刚开始有些不习惯(如果你是 Pascal 程序员会觉的很亲切)。同样如果函数需要返回值,它的类型也是定义在参数的后面(实际上每个 Scala 函数都有返回值,只是有些返回值类型为 Unit,类似为 void 类型)。
此外每个 Scala 表达式都有返回结果(这一点和 Java,C# 等语言不同),比如 Scala 的 if else 语句也是有返回值的,因此函数返回结果无需使用 return 语句。实际上在 Scala 代码应当尽量避免使用 return 语句。函数的最后一个表达式的值就可以作为函数的结果作为返回值。同样由于 Scala 的 “type inference” 特点,本例其实无需指定返回值的类型。对于大多数函数 Scala 都可以推测出函数返回值的类型,但目前来说回溯函数(函数调用自身)还是需要指明返回结果类型的。
查看全文地址: