[libxml-devel] << operator
Charlie Savage
cfis at savagexi.com
Thu Aug 21 15:44:15 EDT 2008
>>> A contrived example, but this code absolutely irritates the shit out
>>> of me:
>>> Class F
>>> def a=(b)
>>> @z = b + 1
>>> return @z
>>> end
>>> def a
>>> return @z
>>> end
>>> end
>>> f = F.new
>>> x = f.a = 1
>>> p f.a # Prints 2
>>> p x # Prints 1
>>
>> That's bizarre. What is going on there? Print statement show that
>> def a= is called before def a, so can x ever be set to 1?
>
>
> It's an "optimization". The rvalue of an assignment is the argument to
> all lvalues in an assignment statement. i.e.: x = f.a = 1 is translated
> into "x = 1 ; f.a = 1". I think that was a very bad decision, but oh
> well. Ruby ain't perfect and this, to me at least, is perfect
> justification for doing what is right vs. what is "standard." -sc
Ah. That is silly.
Charlie
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://rubyforge.org/pipermail/libxml-devel/attachments/20080821/5d02fac7/attachment.bin>
More information about the libxml-devel
mailing list