Разбивает строку на новые строки. Я ожидал бы, что он просто даст мне массив со строкой, которую я передаю как отдельный элемент, без изменения данных, которые я передаю.
Это соглашение так же хорошо, как и любое другое. Например, конструктор list
в Python делает что-то совершенно другое:
>>> list("foo")
['f', 'o', 'o']
Пока это непротиворечиво, я не вижу проблемы.
Даже если вы согласны с тем, что разумно разбивать строку при передаче ее в массив, почему он сохраняет символ перевода строки, а "foo\nbar".split
- нет?
Моя дикая догадка здесь (поддерживается быстрым поиском в Google и TryRuby ) заключается в том, что метод .split
для строк делает его «обратной» операцией метода .join
для массивов.
>> "foospambar".split("spam").join("spam")
=> "foospambar"
Кстати, я не могу повторить ваше поведение на TryRuby :
>> x = Array("foo\nbar")
=> ["foo\nbar"]
>> Array.[] *"foo\nbar"
=> ["foo\nbar"]