scala中“分组”的意外行为

时间:2016-01-08 15:16:52

标签: list scala grouping

我正在学习scala。当我写下如下声明时,

"abcdpqrs".split("").grouped(2).map(_.mkString("")).mkString("|")

我希望它能打印出来,

ab|cd|pq|rs

但是它正在打印,

a|bc|dp|qr|s

我发现这种行为不稳定。我是否遗漏了某些东西,或者还有其他什么可以像我预期的那样对列表进行分区?

1 个答案:

答案 0 :(得分:3)

由于a|bc|dp|qr|s

,您的结果为split("")
scala> "abcdpqrs".split("")
res0: Array[String] = Array("", a, b, c, d, p, q, r, s)

如果您在没有split("")的情况下执行此操作,则

scala> "abcdpqrs".grouped(2).map(_.mkString("")).mkString("|")
res4: String = ab|cd|pq|rs

我认为是你想要的

修改

对于记录@marstran有帮助指出这只发生在java 7中 - split的行为改变了java 8,而split("")将改为

scala> "abcdpqrs".split("")
res0: Array[String] = Array(a, b, c, d, p, q, r, s)