Тогда ответ: это зависит.Я не хочу придираться, но у Руби вряд ли есть реальные операторы.В Ruby большинство «операторов» на самом деле являются методами, которые, возможно, так как в Ruby все является объектом.
Например, рассмотрим этот код
o.x = a + b
Здесь нет операторов, потому что на самом деле этотолько альтернативный способ написания этого кода
o.x=(a.+(b))
И x=
- это имя метода установки, а +
- это также просто имя метода объекта a
.В Ruby символы, которые являются операторами в других языках, могут использоваться как часть имени метода (просто подумайте о ?
, который обычно используется в именах методов Ruby).
Итак, этот код
a = b << c
Фактически это то же самое, что и запись
a = b.<<(c)
Так что <<
делает, зависит от того, как b
реализует этот метод.
Например, для String
<<
метод означает добавление.
a = "Hello, " << "Word"
# a == "Hello, Word"
Но в случае Fixnum
метод <<
означает только сдвиг влево:
a = 5 << 2
# a == 20
Так что ответить на вопрос <<
невозможноозначает, что вы должны посмотреть в документации, что это означает для объекта, которому вы передаете этот метод.Если вы пишете свой собственный класс, вы можете просто реализовать этот оператор так, как вам нравится
class MyClass
# If you prefer, can also be written as
# def << x
def << ( x )
# do something with x
end
end
o = MyClass.new()
x = o << a
Вызывается ваш метод <<
, и вы решаете, что он делает с a
.