From: kwatch@... (kwatch) Date: 2002-03-12T12:57:14+09:00 Subject: [Q] Can I write 'foo.bar[key] = value' ? Hi, If you have a good idea, please tell me. I defined the following class, that works fine. ..________________________________________ class A def initialize(val=nil) @value = val end def value @value end def value=(val) @value = val end end a = A.new(1) p a.value # 1 a.value=("abc") p a.value # "abc" ..________________________________________ But the following doesn't work (compile error). ..________________________________________ class B def initialize @values = Hash.new end def value(key) @values[key] end #def value[]=(key, val) # parse error #def value[key]=(val) # parse error def value=(key, val) # compile ok @value[key] = val end end b = B.new b.value=(1, "abc") # parse error: # b.value=(1, "abc") # ^ ..________________________________________ What I want to do is 'b.value[key] = 1'. Should I write code like this? ..________________________________________ class B ..... def setvalue(key, val) @value[key] = val end .... end ..________________________________________ I'd like to write 'b.value[key] = 1', like 'a.value = 1'. If you have a good solution, please teach me. Regards, kwatch