Scala: tham gia một chuỗi lặp


262

Làm cách nào để tôi "tham gia" một chuỗi lặp bởi một chuỗi khác trong Scala?

val thestrings = Array("a","b","c")
val joined = ???
println(joined)

Tôi muốn mã này xuất ra a,b,c(nối các phần tử bằng ",").


1
@scala_newbie Tôi nghĩ rằng câu hỏi của bạn đã bị hạ thấp, vì một số người cho rằng nó thiếu nỗ lực nghiên cứu.
om-nom-nom

24
googling câu hỏi này là nỗ lực nghiên cứu của tôi
Walrus the Cat

Câu trả lời:


424

Làm thế nào về mkString ?

theStrings.mkString(",")

Một biến thể tồn tại trong đó bạn có thể chỉ định một tiền tố và hậu tố.

Xem ở đây để thực hiện bằng cách sử dụng FoldLeft , dài hơn nhiều, nhưng có lẽ đáng để xem xét vì lợi ích của giáo dục.


Lưu ý rằng việc triển khai FoldLeft giả định một danh sách không trống
Frawr

5
Cảm ơn! Trong trường hợp bất kỳ ai muốn gửi các thành phần chuỗi trong dấu ngoặc kép, mkString cũng hữu ích: theStrings.mkString ("'", "', '", "'")
Niko Gamulin

1
@Frawr Trang đó liên kết đến một loạt các ví dụ oldf Fashionedsoftware.com/2009/07/30/ Khăn bao gồm một triển khai sử dụng khớp mẫu cho trường hợp danh sách trống (Nil). Sửa đổi nó thành bắt chước mkString sẽ như thế này: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos

2
Liên kết langref.org đã chết
Floegipoky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.