首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

scala札记小结

2014-01-26 
scala笔记小结???????????Lists:List(xxx,xxx) ? List[String]List() ? ? ? ? ? ? ?List[Nothing]List

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

?

热点排行