Almann Goo wrote: > Can someone please explain the semantics behind the following: > > irb(main):001:0> a = ( 4 + 5 ) > => 9 > irb(main):002:0> a = ( 4 > irb(main):003:1> + 5 ) > => 5 > irb(main):004:0> a = ( 4 + > irb(main):005:1* 5 ) > => 9 > > The first and last statements make sense to me, but why is the second one > returning 5? > > I find semantics like this troubling, and no documentation sheds light as > to what would cause this behavior. I understand your concern. Let me try to clarify. Expressions in Ruby can be like standalone statements. Statements are terminated with an optional semicolon or with a newline. If a statement is incomplete, it is understood to go on to the next line; if it is complete, it is just as if terminated with a semicolon. Therefore: a = (4 +5) is the same as a = (4; +5) or even a = (4; +5) That is, it evaluates a "4" and then evaluates a "+5" (which then is the resultant value, as it was the last evaluated). But with a = (4+ 5) the parser is able to see that the expression is not complete, and is apparently continued on the next line.