Непонятно, что вы пытаетесь сделать. У вас нет «строки», у вас есть элемент из Array , который является значением Integer . Split
- это метод, определенный для String.
DATA = [3, 4, 5, 6, 7, 8]
DATA.each do |val|
print val
end
Теперь причина, по которой вы получаете это запутанное сообщение об ошибке, немного интересна. Как это бывает, существует Kernel#split
, который допускает Perl-подобную краткость для сценариев. Он разбивает глобальную переменную $_
, которая содержит последний результат из gets
.
>> gets
how now brown cow
=> "how now brown cow\n"
>> split ' '
=> ["how", "now", "brown", "cow"]
>> puts $_
how now brown cow
Но смешивание с Object, так что оно доступно на уровне сценария, оставляет проблему в том, что у каждого когда-либо созданного класса возникает метод #split
.
Если вы запустите простой старый split (), каждый объект в системе будет реагировать, но, к счастью, только с ошибкой.
Делая это приватным методом, он доступен на верхнем уровне для сценариев (потому что «Объект» открыт или что-то в этом роде), но не является частью API каждого экземпляра объекта.