最近在搞Spark,需要学一下Scala,这门语言虽然也是运行在JVM上的,但与Java还是不同的。
1、函数式编程,在Scala中一切皆为对象,包括函数也是对象,因此可以将函数名直接作为形参传递。如果函数字面量只有一行语句,并只带一个参数,则连指代参数都不需要,直接写传入的函数名即可。例如,遍历打印一个列表中的元素。
val oneToFive = 1::2::3::4::5::Nil
oneToFive.foreach(println)
2、列表是不可变的,这类似于Java中的String,在使用List中的方法,如删除前两个元素,使用drop(2),此时会返回一个新的List,而元List是不变的。
3、访问List中的元素,Java使用[],而Scala使用(),这是因为Scala访问元素时实际上是调用了apply()方法,赋值时调用了update()方法。
4、Scala的方法中传递的参数都是val类型的,因此不可以在方法体中对参数进行重新赋值。
5、如果没有显式的返回语句,即没有写return,则scala则会默认返回方法中最后一次计算