2011-07-30 15 views
0

的什麼,我試圖做的草圖低於如何從Scala中的重複參數打印CSV行?

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

我想

printcsv( 「你好」, 「來」, 「世界」)

要打印

「你好」,「至」,「世界」

我可以做到這一點是很多強制性的扭曲,但我正在努力與優雅的解決方案。存儲在val中非常重要,而不是直接打印到控制檯。

回答

5

這是你在找什麼?

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") 
1

簡單,只需使用mkString方法:

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

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

如果您需要任何可以使用前面提到的om-nom-nom提供的map方法。

2

如果您希望使用引號,請使用mkString的三參數版本一步完成。不需要單獨的map

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

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