您的位置:首页 > 编程语言

60.scala编程思想笔记——将序列与zip相结合

2016-01-04 22:00 218 查看
60.scala编程思想笔记——将序列与zip相结合
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50458721

源码下载连接请见第一篇笔记。

接受两个序列并将其配对使用这种做法经常很有用,称为链接。

例如:

import com.atomicscala.AtomicTest._

val left = Vector("a", "b","c", "d")

val right = Vector("q", "r","s", "t")

left.zip(right) is

"Vector((a,q), (b,r), (c,s), (d,t))"

left.zip(0 to 4) is

"Vector((a,0), (b,1), (c,2), (d,3))"

left.zipWithIndex is

"Vector((a,0), (b,1), (c,2), (d,3))"

将left与right结合在一起,所产生的结果是一个由元组构成的Vector,将这些元组是通过将left的每个元素与right中的每个元素配对而产生的。

如果只想在序列中的每个元素之上添加一个索引,那么可以使用专用于此目的的方法zipWithIndex.

放置数字时将其走位元组的第一个元素而不是第二个元素,如下:

import com.atomicscala.AtomicTest._

def number(s:String) =

Range(0,s.length).zip(s)

number("Howdy") is

Vector((0,'H'), (1,'o'), (2,'w'),

(3,'d'),(4,'y'))

注意,与字符串链接时会自动将String断开为一个个的字母。

最后体现以下zip和map结合如下:

import com.atomicscala.AtomicTest._

case class Person(name:String, ID:Int)

val names = Vector("Bob", "Jill","Jim")

val IDs = Vector(1731, 9274, 8378)

names.zip(IDs).map {

case (n, id)=> Person(n, id)

} is "Vector(Person(Bob,1731), " +

"Person(Jill,9274), Person(Jim,8378))"

其中zip产生name-id元组序列,会被传递给map.map方法可以应用函数,也可以应用match子句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: