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
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 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'].
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
On 12/1/06, Robert Klemme <shortcutter@googlemail.com> 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?
Hi,
In message "Re: why does openstruct not respond to and =?" on Fri, 1 Dec 2006 21:35:42 +0900, "Martin DeMello" <martindemello@gmail.com> 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.
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
On 01.12.2006 13:35, Martin DeMello wrote:
On 12/1/06, Robert Klemme <shortcutter@googlemail.com> 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.
In the rest of the code I'd far rather use opts.option than
opts[:option] - the latter ends up looking cluttered.
martin
On 12/1/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
In message "Re: why does openstruct not respond to and =?" > on Fri, 1 Dec 2006 21:35:42 +0900, "Martin DeMello" <martindemello@gmail.com> 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?