I want to be able to do this to merge a hash into attribute bas on
instance bar in class foo;
bar = Foo.new
bar.bas << { :this => “that” }
Is there any way to define the accessor in Foo to be able to do this?
Thanks,
James
I want to be able to do this to merge a hash into attribute bas on
instance bar in class foo;
bar = Foo.new
bar.bas << { :this => “that” }
Is there any way to define the accessor in Foo to be able to do this?
Thanks,
James
J2M wrote:
I want to be able to do this to merge a hash into attribute bas on
instance bar in class foo;bar = Foo.new
bar.bas << { :this => “that” }Is there any way to define the accessor in Foo to be able to do this?
Thanks,
James
class Hash
alias :<<, :merge!
end
class Foo
attr :bas
def initialize
@bas = {}
end
end
Is that what you had in mind?
T.
Hi –
On Mon, 25 Sep 2006, J2M wrote:
I want to be able to do this to merge a hash into attribute bas on
instance bar in class foo;bar = Foo.new
bar.bas << { :this => “that” }Is there any way to define the accessor in Foo to be able to do this?
Here’s one way. It involves assigning a hash to @bar, and adding the
<< behavior to that hash (using a module).
require ‘test/unit’
class Foo
attr_reader :bas
module UpdateAppender
def <<(other)
update(other)
end
end
def initialize
@bas = {}.extend(UpdateAppender)
end
end
class TestMerging < Test::Unit::TestCase
def test_1
f = Foo.new
f.bas << { :this => “that” }
assert_equal(f.bas.keys, [:this])
end
end
David
Thanks Trans, I will have a go tomorrow it is very late here in the UK
Thanks Trans, I will have a go tomorrow it is very late here in the UK
Thank you both for such quick responses. I will give this a go tomorrow
(v. late here in the UK).
David - thank you for all the time you take to help out us newbies, and
thank you for RailsConf Europe too - fan-tas-tic!
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs