繁体   English   中英

Scala-在列表中使用for()或foreach()返回

[英]Scala - the return using a for() or foreach() in a list

我如何从foreachList应用的for语句的返回值构建a string (不打印它)? 可以说,我有这个:

val names = List("Bob", "Fred", "Joe", "Julia", "Kim")
val x: String = for (name <- names) name //I don't need this println(name)

这些name返回的字符串我正尝试放入String ,并用space将它们连接起来。

使用mkString(sep: String)函数:

val names = List("Bob", "Fred", "Joe", "Julia", "Kim")
val x = names.mkString(" ")      // "Bob Fred Joe Julia Kim"

forforeach返回Unit 它们仅用于打印之类的副作用。 正如Jean所说, mkString是您最好的选择。 还有第二个版本,可让您传递打开和关闭字符串,例如,

scala> names.mkString("[", ", ", "]") res0: String = [Bob, Fred, Joe, Julia, Kim]

如果您需要更大的灵活性, reduceLeft可以使用reduceLeft mkStringmkString作用:

"[" + names.reduceLeft((str, name) => str + ", " + name) + "]"

不过有一个区别。 reduceLeft为一个空的容器抛出一个异常,而mkString只返回“”。 foldLeft适用于空集合,但是正确设置分隔符非常棘手。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM