What is meant by << operator ???

  • Thread starter Muhammad mohsin ali Ma
  • Start date
M

Muhammad mohsin ali Ma

What is meant by << operator?

For example this operator is used in following code,


/*****************************************************/
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
current_item = CartItem.new(product)
@items << current_item
end
current_item
end
/*****************************************************/
 
J

Jan-Erik R.

Muhammad said:
What is meant by << operator?

For example this operator is used in following code,


/*****************************************************/
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
current_item = CartItem.new(product)
@items << current_item
end
current_item
end
/*****************************************************/
it appends the object "current_item" to the Array @items
 
F

FrihD

Hello,
What is meant by << operator?

It is not an operator, but actually is the method "<<". So it depends on
the object that receives this method.
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
current_item = CartItem.new(product)
@items << current_item
end
current_item
end

Consequently given that @items certainly is an Array, it appends
current_item to @items which seems quite intuitive.

--Lucas
 
G

Gary Wright

It is not an operator, but actually is the method "<<". So it
depends on the object that receives this method.


We just had a long rambling thread about operators vs. methods: <http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/323906
I'd describe '<<' as a re-definable operator. Syntactically it is an
operator but its semantics are defined by an associated method.

Ruby also has operators that can't be redefined: || && or and not ! ?:

There are often semantics associated with operators that shouldn't be
disregarded without thought. For example:

lhs << rhs

often means that rhs will 'added' to lhs modifying lhs in the
process. On the other hand:

lhs + rhs

generally means new object formed by 'adding' rhs' to 'lhs' will be
returned and that lhs will not be modified.

Ruby doesn't enforce these semantics but developers shouldn't ignore
them either.

Gary Wright
 
T

Tim Greer

FrihD said:
It is not an operator, but actually is the method "<<". So it depends
on the object that receives this method.

Actually, it depends on what it depends on, because it's both (either
or). It's a method, or just an operator (<< left shift bitwise
operator), or as an append operator. I suppose it's all in the use and
wording, though.
 
D

David A. Black

Hi --

Actually, it depends on what it depends on, because it's both (either
or). It's a method, or just an operator (<< left shift bitwise
operator), or as an append operator. I suppose it's all in the use and
wording, though.

The method-ness has a certain primacy, in the sense that this:

a << b

is always a method call; that is, it is always the same as:

a.<<(b)

The syntactic sugar, however, has the clear purpose of making it look
like an infix operator. I think it's an operator kind of the way
"attributes" are attributes -- that is, mainly in the eye of the
beholder. The language really doesn't care whether we call things
attributes and operators, so it's all about what helps people make
sense of it.


David

--
David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2)

http://www.wishsight.com => Independent, social wishlist management!
 
T

Tim Greer

David said:
Hi --



The method-ness has a certain primacy, in the sense that this:

a << b

is always a method call; that is, it is always the same as:

a.<<(b)

The syntactic sugar, however, has the clear purpose of making it look
like an infix operator. I think it's an operator kind of the way
"attributes" are attributes -- that is, mainly in the eye of the
beholder. The language really doesn't care whether we call things
attributes and operators, so it's all about what helps people make
sense of it.


David

That's pretty much what I was saying, too. (Or trying to say). I
personally don't care how people refer to things, provided it conveys
the intent and function. It's all good to me.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top