[英]Scala - the return using a for() or foreach() in a list
我如何从foreach
或List
应用的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
将它们连接起来。
val names = List("Bob", "Fred", "Joe", "Julia", "Kim")
val x = names.mkString(" ") // "Bob Fred Joe Julia Kim"
for
和foreach
返回Unit
。 它们仅用于打印之类的副作用。 正如Jean所说, mkString
是您最好的选择。 还有第二个版本,可让您传递打开和关闭字符串,例如,
scala> names.mkString("[", ", ", "]") res0: String = [Bob, Fred, Joe, Julia, Kim]
如果您需要更大的灵活性, reduceLeft
可以使用reduceLeft
。 这mkString
是mkString
作用:
"[" + names.reduceLeft((str, name) => str + ", " + name) + "]"
不过有一个区别。 reduceLeft
为一个空的容器抛出一个异常,而mkString
只返回“”。 foldLeft
适用于空集合,但是正确设置分隔符非常棘手。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.