scala笔记小结
?
?
?
??
??
??
??
Lists:
List("xxx","xxx") ? List[String]
List() ? ? ? ? ? ? ?List[Nothing]
List(1,2,3,4,5) ? ?
?
:: 是 scala的cons操作符
car :: cdt?
"1"::("2"::("3"::Nil)) ? ? ? ? ? ?//> res1: List[String] = List(1, 2, 3)
scala中做了简化 所以 也可以写成"1"::"2"::"3"::Nil是等价的 (::其实是方法名 相当于调用方法 可以写成.::)
?
1 :: 2 :: 3 :: 4 :: Nil 和 Nil.::(4).::(3).::(2).::(1)
等价
List中一样有 head和tail方法
此外 两个List连接可以用:::
?List(1,2,3):::List(4,5,6) ? ? ? ? ? ? ? ? ? ? ?//> res6: List[Int] = List(1, 2, 3, 4, 5, 6)
?这个和List(4,5,6).:::(List(1,2,3))等价
?
?
List的模式:
Nil 表示空list
p :: ps 表示以p开头的元素 这个模式和[Head|Tail]一致
List(p1,...,p2) 也可以写成 p1::....::pn::Nil
当然也可以用_
例子:
? ?List(1,2,3) match {
? ? ? case List(1,_,3) => "yes" ?//这样其实也是一种构造模式吧
? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//> res2: String = yes
?
?
更多用于List的函数:
xs.length
xs.last ? 获得最后一个
xs.init ? 得到一个除了最后一个元素的列表
xs take n
xs drop n
xs(n)
?
scala> def m1(x: => Int) = List(x, x)
m1: (x: => Int)List[Int]
scala> import util.Random
import util.Random
scala> val r = new Random()
r: scala.util.Random = scala.util.Random@ad662c
//as the method is invoked twice, the two values are different.
scala> m1(r.nextInt)
res37: List[Int] = List(1317293255, 1268355315
翻译自:
http://java.dzone.com/articles/revealing-scala-magician%E2%80%99s?
?
一些学习资料:
http://zh.scala-tour.com/#/welcome
http://twitter.github.io/scala_school/zh_cn/
http://twitter.github.io/effectivescala/index-cn.html
?