2016-01-08 2 views
0

Я изучаю scala прямо сейчас. Когда я написал заявление, как показано ниже,неожиданное поведение «сгруппировано» в scala

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

я ожидал, что печать,

ab|cd|pq|rs

, но вместо этого он печатает,

a|bc|dp|qr|s

Я нахожу это поведение неустойчиво. Я что-то упустил или есть что-то еще, что может разбивать список, как я ожидал?

+0

Запуск кода, я вижу «AB | CD | рд | RS». Вы уверены, что скопировали его правильно в описание? – bedwyr

+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 

который я думаю, что вы хотите

EDIT

Для записи @marstran услужливо отметил, что это происходит только в Java 7 - поведение раскола было изменено с Java 8, и вместо split("") даст

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

ничего себе! Спасибо чувак! :) –

+0

без проблем! Я знаю только это, потому что он меня поймал раньше! – Hamish

+0

спасибо в любом случае! Я пробивал себе голову на протяжении последних 30 минут! я скоро приму ваш ответ! –

Смежные вопросы