# Please help. what does mean \<\<

**URL:** <https://www.ruby-forum.com/t/please-help-what-does-mean/184692>\
**Category:** Ruby\
**Created:** [March 6, 2010, 8:58pm UTC](https://www.ruby-forum.com/t/please-help-what-does-mean/184692 "2010-03-06T20:58:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![superski](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f9ae1b/32.png) [@superski](https://www.ruby-forum.com/u/superski)\
**Post date:** [March 6, 2010, 8:58pm UTC](https://www.ruby-forum.com/t/please-help-what-does-mean/184692/1 "2010-03-06T20:58:02Z")

</div>

I have to translate code from ruby to .net  
And I dont understand what means \<\< in the code. Its simple I know but  
please do not delete question and answer the question please

def eval\_op(op, val1, val2, expr1, expr2, source, source\_expr)  
result = val1.send(op, val2)  
expr = “(#{expr1} #{op} #{expr2})”  
test(result, expr)  
source \<\< result; source\_expr \<\< expr  
find(source, source\_expr)  
source.pop; source\_expr.pop  
end

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![superski](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f9ae1b/32.png) [@superski](https://www.ruby-forum.com/u/superski)\
**Post date:** [March 6, 2010, 9:32pm UTC](https://www.ruby-forum.com/t/please-help-what-does-mean/184692/2 "2010-03-06T21:32:10Z")

</div>

On Sat, Mar 6, 2010 at 2:58 PM, Kalinkin Kirill  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> source.pop; source\_expr.pop  
> end
> 
> Thanks in advance!

It depends on what objects source and source\_expr are.

\<\< is just a message, and different objects can implement it  
differently.

For integers \<\< x means shift left x bits,

For arrays \<\< x means append x to the end of the array.

Most classes will implement \<\< with something like one of these two  
meanings in mind.

There’s no way to tell from that snippet of code whether source and  
source\_expr are instances of standard Ruby classes or classes written  
as part of the overall application.

–  
Rick DeNatale

Blog: [http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)  
Twitter: [http://twitter.com/RickDeNatale](http://twitter.com/RickDeNatale)  
WWR: [http://www.workingwithrails.com/person/9021-rick-denatale](http://www.workingwithrails.com/person/9021-rick-denatale)  
LinkedIn: [http://www.linkedin.com/in/rickdenatale](http://www.linkedin.com/in/rickdenatale)

---

<div class="post-metadata">

**Author:** ![superski](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f9ae1b/32.png) [@superski](https://www.ruby-forum.com/u/superski)\
**Post date:** [March 6, 2010, 9:40pm UTC](https://www.ruby-forum.com/t/please-help-what-does-mean/184692/3 "2010-03-06T21:40:30Z")

</div>

Rick Denatale wrote:

> On Sat, Mar 6, 2010 at 2:58 PM, Kalinkin Kirill  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > ï¿½source.pop; source\_expr.pop  
> > end
> > 
> > Thanks in advance!
> 
> It depends on what objects source and source\_expr are.
> 
> \<\< is just a message, and different objects can implement it  
> differently.
> 
> For integers \<\< x means shift left x bits,
> 
> For arrays \<\< x means append x to the end of the array.

It is an array and it means that the operation is push. Thanks a lot for  
the quick answer! I became fan of ruby. So elegant language!
