object Operator{
def main(args : Array[String]){
val list1 = List("Java","Scala","C++")
val list2 = List("JS","C#")
val str = "name"
println(list1 ++ list2)
// List(Java, Scala, C++, JS, C#)
println(str ++ list1)
// Vector(n, a, m, e, Java, Scala, C++)
println(list1 ++: list2)
// List(Java, Scala, C++, JS, C#)
println(list1 ++: str)
// Vector(Java, Scala, C++, n, a, m, e)
println(str ++: list1)
// List(n, a, m, e, Java, Scala, C++)
println(str +: list1)
// List(name, Java, Scala, C++)
println(str :+ list1)
// Vector(n, a, m, e, List(Java, Scala, C++))
println(list1 :+ str)
// List(Java, Scala, C++, name)
println(list1 +: str)
// Vector(List(Java, Scala, C++), n, a, m, e)
println(list1 :: list2)
// List(List(Java, Scala, C++), JS, C#)
println(list2 :: list1)
// List(List(JS, C#), Java, Scala, C++)
println(list1 ::: list2)
// List(Java, Scala, C++, JS, C#)
println(list2 ::: list1)
// List(JS, C#, Java, Scala, C++)
println((str /: list1)(_ + " @ " + _))
// name @ Java @ Scala @ C++
println((list1 :\ str)(_ + " + " + _))
// Java + Scala + C++ + name
//++
}
}
++为连接两个List,合成一个,注意,两侧都要是List,所以第二句print的str会被分解为四个char型
++: 和++相似
+:和:+,冒号一侧要是List,加号一侧要是单元素,合成一个
::是List的成员函数,因此右侧必须是List,不然会报错,该函数会将左侧当作一个元素加入到右侧List的第一位
:::也是List的成员函数,故右侧必须是List,该函数要求左侧也必须是List,然后合成一个大List
/:,将单元素放在List前,然后对每两个元素进行后面的操作
:\,与前相反,将单元素放在List后
参考资料:
http://www.howsoftworks.net/scala.api/scala.collection.immutable/list_colonbslash.html