Took me aback - there seems to be no reason for OpenStruct not to
permit member access via ostruct[:field] and ostruct[‘field’].
martin
Took me aback - there seems to be no reason for OpenStruct not to
permit member access via ostruct[:field] and ostruct[‘field’].
martin
On 01.12.2006 13:14, Martin DeMello wrote:
Took me aback - there seems to be no reason for OpenStruct not to
permit member access via ostruct[:field] and ostruct[‘field’].
OpenStruct also does not inherit Enumerable. I guess the story is, if
you need a Hash then use a Hash. The key point of OpenStruct is that
you can use arbitrary member setters and getters not indexed access. Is
there actually a situation where you need both?
Kind regards
robert
On 12/1/06, Robert K. [email protected] wrote:
On 01.12.2006 13:14, Martin DeMello wrote:
Took me aback - there seems to be no reason for OpenStruct not to
permit member access via ostruct[:field] and ostruct[‘field’].OpenStruct also does not inherit Enumerable. I guess the story is, if
you need a Hash then use a Hash. The key point of OpenStruct is that
you can use arbitrary member setters and getters not indexed access. Is
there actually a situation where you need both?
I was trying to collect all the binary options to my app in a hash (as
being somewhat less verbose than the standard OptionParser syntax):
{
:verbose => [“-v”, “–[no-]verbose”, “run verbosely”],
:all => [“-A”, “–all”, “select all files”],
#…
}.each {|k,v| opt.on(*v) {|i| opts.send(:“#{k}=”, i) } }
The last line would have been a lot less ugly as opts[k] = i, and as I
said, there seems no real reason not to allow it.
martin
Hi,
In message “Re: why does openstruct not respond to [] and []=?”
on Fri, 1 Dec 2006 21:35:42 +0900, “Martin DeMello”
[email protected] writes:
|{
| :verbose => [“-v”, “–[no-]verbose”, “run verbosely”],
| :all => [“-A”, “–all”, “select all files”],
| #…
|}.each {|k,v| opt.on(*v) {|i| opts.send(:“#{k}=”, i) } }
|
|The last line would have been a lot less ugly as opts[k] = i, and as I
|said, there seems no real reason not to allow it.
Is there any reason that you have to use OpenStruct instead of plain
hash as opts?
matz.
On 12/1/06, Yukihiro M. [email protected] wrote:
Is there any reason that you have to use OpenStruct instead of plain
hash as opts?
In the rest of the code I’d far rather use opts.option than
opts[:option] - the latter ends up looking cluttered.
martin
On 01.12.2006 13:35, Martin DeMello wrote:
I was trying to collect all the binary options to my app in a hash (as
being somewhat less verbose than the standard OptionParser syntax):{
:verbose => ["-v", “–[no-]verbose”, “run verbosely”],
:all => ["-A", “–all”, “select all files”],
#…
}.each {|k,v| opt.on(*v) {|i| opts.send(:"#{k}=", i) } }The last line would have been a lot less ugly as opts[k] = i, and as I
said, there seems no real reason not to allow it.
Hm… Personally I would prefer the slightly more verbose but less
complex definition of options. Just my 0.02EUR.
Btw, you can of course remedy this simply by just defining #[]= on
instance opts the way you used it here.
Kind regards
robert
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