Array
val greetStrings = new Array[String](3)
greetStrings(0) = "Hello"
greetStrings(1) = ","
greetStrings(2) = "world!\n" for(i <- 0 to 2)
print(greetStrings(i)) val numNames = Array("zero", "one", "two")
for(x <- numNames)
println(x)
针对上面的代码可以说如下几点:
泛型支持
new SomeClass[Type Argument](...)
当方法只有一个参数时,可以采用中缀的形式调用。
0 to 2 // (0).to(2)
一切皆为对象,所有的运算符都对应对象上的方法。
obj(...) 对应 obj.apply(...)
obj(...) = ... 对应 obj.update(...)
object TestClass {
def apply(): TestClass = new TestClass()
}
class TestClass {
def say(msg: String):Unit = {
println(msg)
} def apply(x: Int): Unit = {
println(x)
} def apply(x: Int, y: Int): Unit = {
println(x)
println(y)
} def apply(args: Int*): Unit = {
for(x <- args)
println(x)
} def update(x: Int, msg: String): Unit = {
println(x)
println(msg)
} def update(x: Int, y: Int, msg: String): Unit = {
println(x)
println(y)
println(msg)
}
} var test = new TestClass()
test say "hello, world!"
test(1)
test(2, 3)
test(2, 3, 4) test(1) = "hello"
test(2, 3) = "world" println(TestClass())
List
var list = List(3, 4, 5)
list = 1 :: 2 :: list
list.foreach(println) class TestClass {
def |: (x: Int): TestClass = {
println(x)
this
}
} var test = new TestClass()
2 |: 1 |: test
List的用法还是比较自然的,从上面的代码可以学到一点额外的知识,即:以“:”号结尾的方法,在采用中缀调用法时,对象在右侧。
Tuple
val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)
Tuple在语法层面上显出了其特殊性,估计Scala在很多地方对其都有特殊处理,拭目以待了。
Set adn Map
// Set
var set = Set(1, 2, 3)
set += 4
println(set.contains(2)) // Map
var map = Map(1 -> "One", 2 -> "Two")
println(map)
1 -> "One" 只是方法调用,即:(1).->("One"),返回的是一个Tuple。