2012-10-28 25 views

Trả lời

11

Bạn có thể làm điều đó với flatMap.

inArray.flatMap(c => (1 to 3).map(c+)) 
+0

Vâng, những gì nếu hậu tố không phải là một chỉ số? Tôi thực sự muốn sử dụng chức năng tùy chỉnh của phần tử đầu vào để tạo ra 3 phần tử đầu ra. – Ivan

+1

giả sử hàm tùy chỉnh của bạn trả về một bộ sưu tập: 'inArray.flatMap (customFunction)' –

+0

Cảm ơn. Đó là nó. Tất cả các anwers làm việc và nhận upvotes nhưng bạn là người đầu tiên :-) – Ivan

5

Sử dụng for -comprehension.

scala> for { 
    | x <- Array("a", "b", "c", "d") 
    | n <- 1 to 3 
    | } yield x + n 
res0: Array[java.lang.String] = Array(a1, a2, a3, b1, b2, b3, c1, c2, c3, d1, d2, d3) 
6

này có thể trông đẹp hơn bằng cách sử dụng cho-hiểu

for { 
    s <- inArray 
    i <- Array(1, 2, 3) //or other traversable 
} 
yield s + i 

này sử dụng một sự kết hợp của bản đồ và flatMap dưới tấm chăn như đã mô tả chi tiết trong SLS

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