2013-05-07 37 views
14

去年我对标准ML有很多经验,但在大约10个月里我还没有做过任何真正的函数编程。现在我正在Scala的潮流中,在编写编译器时(尽管公平地说,这种方法可能不是库方法),我无法找到在标准ML中广泛使用的操作。斯卡拉 - Tuple列表的两个列表

基本上,我有两个列表:

List("a","b","c") 
List(1,2,3) 

而且我想这会给我这样的元组的列表的操作:

List(("a",1), ("b",2), ("c",3)) 

有没有一个标准的Scala功能,我可以使用得到这个结果? (我想,我们把它称为标准ML拉链功能,但似乎是指不同的东西时,我正在寻找斯卡拉压缩功能。)

+0

很确定'拉链'是你想要的,是什么让你觉得它是不同的? – 2013-05-07 15:57:33

+0

我发现Stackoverflow上的另一篇文章给出了压缩的不同定义,所以我只是假设我错了。 :/ – GJK 2013-05-07 15:59:34

+0

你也去过CMU吗? – rasen58 2017-05-31 21:21:36

回答

29

你的权利,你可以使用压缩:

val a = List("a","b","c") 
// a: List[String] = List(a, b, c) 

val b = List(1,2,3) 
// b: List[Int] = List(1, 2, 3) 

a zip b // beautified a.zip(b) 
//res0: List[(String, Int)] = List((a,1), (b,2), (c,3)) 
+0

谢谢,我不敢相信这在任何搜索中都没有出现。在这个问题搜索之前,我花了15分钟,并且没有任何结果。 – GJK 2013-05-07 16:00:20

+1

@GJK注意,在元组上也有'.zipped'方法(如果你想压缩2或3个集合),它的行为几乎相同:'(a,b,c).zipped.toList' – 2013-05-07 16:02:33

+0

我其实找到了该方法,但是当我在SimplyScala.com上输入终端时,它不起作用,所以我只是假设它不适合我所需要的。 – GJK 2013-05-07 16:31:01