scala 的一些基本数据结构

scala 提供了 List、Tuple、Map、Option 这些常用的容器。

关于 List

其实和 python 的 list 挺像的,除了一些常规操作,这里主要介绍一些有 functional pragramming 特点的函数。很奇怪的是为什么不是作为一个函数而是作为成员函数提供出来的。放在 scala.collection.immutable 里面,构造可以用 :: 连接若干项,最后是 Nil

  • filter 符合条件的保留下来,remove 表示去掉符合条件的
  • takeWhile 取子元素到条件不满足为止
  • map 将函数作用在元素上,可以用 _. 调用成员函数;flatMap 先将 map 得到新的 List,然后 flatten。
  • sort 进行排序
  • reduceLeft 进行 reduce 操作,foldLeft 给定初值的 reduce

需要注意由于 Java 自己的限制导致这类函数写起来都很麻烦。

关于 Tuple

和 python 类似,也是用 () 扩起来的的,可以用 ._n 访问其成员。

关于 Map

构造使用 -> 表示 key value pair。还可以用 ++=、–= 等操作。keys 和 values 分别返回对应 List。

关于 Option

前面说了 SomeNone 两种。

XML

scala 对 XML 的支持是语言级别的,可以直接在程序里面书写 XML。通常也可以使用 scala.xml._ 进行 parsing。用 {} 将 XML 里面的东西可以进行替换,替换成为 scala 变量值或者函数值。使用 scala.xml.XML.load 可以加载 xml 文件并进行 parsing,使用 var_name // “tagname” 进行 select,获得的是 List。整个语法与 xpath 有一定相似。

关于 function

java 传递函数是非常繁复的(需要写个 interface 然后传递 interface),而 scala 的 type => type 类型的变量就是函数,很容易进行传递。可以使用多个括号对参数进行分组。可设定部分的参数产生 partial function,也可以绑定某些 local 的变量。call-by-name 传递时形式为 : => 其实也可以解释为传递的是映射为某种类型的 code block。

——————
And he said, For these seven ewe lambs shall you take of my hand, that they may be a witness to me, that I have dig this well.

Advertisements
scala 的一些基本数据结构

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s