"grouped" 在 scala 中的意外行为
unexpected behaviour of "grouped" in scala
我现在正在学习scala。当我写下如下语句时,
"abcdpqrs".split("").grouped(2).map(_.mkString("")).mkString("|")
我希望它能打印出来,
ab|cd|pq|rs
但它正在打印,
a|bc|dp|qr|s
我发现这种行为不稳定。我是不是遗漏了什么,或者还有什么可以按照我的预期对列表进行分区?
由于 split("")
,您得到 a|bc|dp|qr|s
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)
我现在正在学习scala。当我写下如下语句时,
"abcdpqrs".split("").grouped(2).map(_.mkString("")).mkString("|")
我希望它能打印出来,
ab|cd|pq|rs
但它正在打印,
a|bc|dp|qr|s
我发现这种行为不稳定。我是不是遗漏了什么,或者还有什么可以按照我的预期对列表进行分区?
由于 split("")
a|bc|dp|qr|s
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)