2013-05-07 47 views
14

Năm ngoái tôi có khá nhiều kinh nghiệm với ML tiêu chuẩn, nhưng tôi chưa thực hiện bất kỳ chương trình chức năng thực nào trong khoảng 10 tháng. Bây giờ tôi đang ở trên bandwagon Scala, tôi gặp khó khăn khi tìm một hoạt động mà tôi đã sử dụng rộng rãi trong ML tiêu chuẩn khi viết một trình biên dịch (mặc dù công bằng, phương pháp này có thể không phải là một phương thức thư viện).Scala - Hai danh sách vào danh sách Tuple

Về cơ bản, tôi có hai danh sách:

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

Và tôi muốn một hoạt động mà sẽ cung cấp cho tôi một danh sách các hàng như thế này:

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

Có Scala chức năng chuẩn mà tôi có thể sử dụng để có được kết quả này? (Tôi nghĩ chúng ta gọi nó là một chức năng zip trong tiêu chuẩn ML, nhưng điều đó dường như ám chỉ cái gì khác nhau khi tôi đang tìm kiếm chức năng zip Scala.)

+0

Khá chắc chắn 'zip' là những gì bạn muốn, điều gì khiến bạn nghĩ rằng đó là điều gì đó khác biệt? –

+0

Tôi tìm thấy một bài đăng khác trên Stackoverflow đã đưa ra một định nghĩa khác về nén, vì vậy tôi cho rằng tôi đã sai. :/ – GJK

+0

Bạn cũng đã đến CMU chưa? – rasen58

Trả lời

29

Bạn nói đúng, bạn có thể sử dụng zip:

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

Cảm ơn bạn, tôi không thể tin rằng điều này đã không bật lên trong bất kỳ tìm kiếm nào. Tôi đã dành 15 phút trước khi câu hỏi này tìm kiếm và không có gì. – GJK

+1

@GJK lưu ý rằng cũng có phương thức '.zipped' trên tuple (nếu bạn muốn nén 2 hoặc 3 bộ sưu tập) hoạt động gần như giống nhau:' (a, b, c) .zipped.toList' –

+0

Tôi thực sự đã tìm thấy phương pháp đó, tuy nhiên nó không hoạt động khi tôi gõ nó vào thiết bị đầu cuối tại SimplyScala.com, vì vậy tôi chỉ giả định rằng nó sẽ không hoạt động cho những gì tôi cần. – GJK

Các vấn đề liên quan