Iñaki Baz Castillo wrote:
Hi, is it not possible to create a method to use in this way?
my_object.param("tag") = "new_value"
How to define that method? I've tryed something as:
def param(name)= (value)
@params[name] = value
end
but obviously I get error:
SyntaxError: compile error
syntax error, unexpected '='
Is there some way? Thanks a lot.
Untested, and probably highly inelegant:
def param key, value
~ @params["#{key.to_sym}"] = value
end
Should produce:
object.params my_key, 'my value'
=> @params[:my_key] => 'my value'
While not the interface you desire, it is the output you want.
(May be useful as a Rails helper, but otherwise?)
Or, you could use an optionhash to create your method:
,http://www.lukeredpath.co.uk/2006/7/27/using-ruby-hashes-as-keyword-arguments-with-easy-defaults>
Something like:
def param(options = {})
~ @params[options.key] = options[options.key]
end
should look like
object.param 'key' => 'value'
=> @params['key'] => 'value'
You could sexy that up with Hash#merge:
def param(options = {})
~ @params = @params.merge options
end
(probably more efficient than the first variant, too.)
Hope that helps.
- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com
~ - You know you've been hacking too long when...
...you want to wash your hair and think: awk -F"/neck" '{ print $1 }' |
shower