Синтаксис Ruby не позволяет реализовать метод, подобный >>
, так, как вы ожидаете.
<<
в "Hello" << "World"
эквивалентно следующему:
"Hello".<<("World")
Если вы хотите создать метод prepend >>
, я бы ожидал, что «Hello» в "Hello" >> "World"
будет аргументом для строки "World"
:
("Hello")>>."World"
, котораянедопустимый синтаксис Ruby.
Если бы «World» был аргументом для «Hello», то вы просто добавили бы строку, как продемонстрировано fl00r.Если псевдоним >>
будет означать то же, что и <<
, это приведет к путанице.
Вот почему вместо этого у вас есть метод insert
.Если вы хотите вставить «Hello» перед «World», вы бы назвали insert для «World»:
"World".insert(0, "Hello ")
Здесь необходимо помнить, что <<
это вызов метода, подобный строковому методу, например length
, поэтому вы должны сохранять порядок, аналогичный обычным вызовам методов.