On Fri, Sep 12, 2003 at 02:14:36AM +0900, Dmitry V. Sabanin wrote:
> Hi,
> I've started making my own C extension to ruby, and found that strange 
> behavior:
> class MyTest
>   def []=(key,val)
>     "my_own_return_value"
>   end
> end
> test = MyTest.new
> p test[1] = "big"
> 
> Both ruby1.6 and ruby1.7 puts "my_own_return_value", but ruby1.8 puts
> "big". I'm interested if this is right. 
> I know that it's kinda stupid to do something like this and I found that just 
> by accident, but anyway :)

The rationale for that is making it work like an assignment:

 a = b[0] = 1
 # here you expect a == 1, not a = return value of []=

Same thing for 
 a = b.bla = 1

-- 
 _           _                             
| |__   __ _| |_ ___ _ __ ___   __ _ _ __  
| '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
| |_) | (_| | |_\__ \ | | | | | (_| | | | |
|_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
	Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

MSDOS didn't get as bad as it is overnight -- it took over ten years
of careful development.
	-- dmeggins / aix1.uottawa.ca