Hello,
following code shows the difference in handling Integers and class 
Instances as return values of operator [] :
# -----------------------
h=[] #also: h = Hash.new
h[5] = 3; e = h[5]; e = 7
print e, h[5]

class C
	attr_accessor :v
	def initialize
		@v = 0
	end
end

h[8] = C.new ; c = h[8] ; c.v = 7
print c.v, h[8].v
# ------- Output --------
7377
I had expected 7777 here. 
Description of [](retranslated from german pickaxe): 
"recalls aValueObject, which is stored for aKeyObject" 
I don't find further explanation. Reference, Value, Const?
I think the result is because 3 is an Integer and 3 = 7 don't work.
Further:
#--------------------
h[9] = C.new ; c = h[9]
c = C.new ; c.v = 7
print c.v,h[9].v
# -------- produces ---
70
I see some sort of rule there, but I dont think this
is "POLS". Is there a rule somewhere? (chapter of pickaxe?)
I could look into the source code, but this is no explanation for the 
reason why its done this way.

Michael B.