I have an object created, and I want, based on some conditional check, to add some attributes to this object. How can I do this? To explain what I want:
A=Object.new if(something happens) { #make A have another attibute say age #& store something in A.age }
First of all the thing about ruby is that it allows a different syntax which is used widely by ruby coders. Capitalized identifiers are Classes or Constants (thanks to sepp2k for his comment), but you try to make it an object. And almost nobody uses {}
to mark a multiline block.
a = Object.new if (something happens) # do something end
I'm not sure what your question is, but I have an idea, and this would be the solution:
If you know what attributes that class can have, and it's limited you should use
class YourClass attr_accessor :age end
attr_accessor :age
is short for:
def age @age end def age=(new_age) @age = new_age end
Now you can do something like this:
a = YourClass.new if (some condition) a.age = new_value end
If you want to do it completely dynamically you can do something like this:
a = Object.new if (some condition) a.class.module_eval { attr_accessor :age} a.age = new_age_value end
You could use an OpenStruct:
a = OpenStruct.new if condition a.age = 4 end
Or just use a plain old hash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With