Как распечатать строку CSV из повторяющихся параметров в Scala? - PullRequest
0 голосов
/ 31 июля 2011

Эскиз того, что я пытаюсь сделать, ниже

  def printcsv(args: String*) {
    val line = for (arg <- args) {???}
    println(line)
  }

Я бы хотел

printcsv ("Hello", "to", "world")

Для печати

"Здравствуйте", "в", "мир"

Я мог бы сделать это, было много императивных искажений, однако я борюсь с элегантным решением. Важно хранить в val, а не просто печатать прямо на консоль.

Ответы [ 3 ]

5 голосов
/ 31 июля 2011

Это то, что вы ищете?

scala> val args = List("Hello","to","world")
args: List[java.lang.String] = List(Hello, to, world)

scala> val csv = args.mkString(",")
csv: String = Hello,to,world

scala> print(csv)
Hello,to,world

Если вам нужны кавычки в результате, вы можете сделать что-то подобное до mkString:

scala> args.map('"'+_+'"')
res14: List[java.lang.String] = List("Hello", "to", "world")
2 голосов
/ 31 июля 2011

Если вы хотите, чтобы это было в кавычках, используйте версию mkString с тремя аргументами, чтобы сделать это за один шаг.Нет необходимости в отдельной map:

scala> def printcsv(args:String*) = args.mkString("\"","\",\"","\"")
printcsv: (args: String*)String

scala> printcsv("hello", "to", "world")
res0: String = "hello","to","world"
1 голос
/ 31 июля 2011

Просто, просто используйте метод mkString:

scala> def printcsv(args:String*) = args.mkString(",")
printcsv: (args: String*)String

scala> printcsv("hello", "to", "world")
res0: String = hello,to,world

И если вам нужны какие-либо преобразования заранее, вы можете использовать метод map как упомянуто om-nom-nom.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...