Hello,
Is there a cleaner way to check if no field have been set than the
following code ?
o = OpenStruct.new
=> #
o.inspect == “#”
=> true
o.one_field = true
=> true
o.inspect == “#”
=> false
o.delete_field ‘one_field’
=> nil
o.inspect == “#”
=> true
jney
2
On 23.10.2010 19:16, jney wrote:
=> false
o.delete_field ‘one_field’
=> nil
o.inspect == “#”
=> true
I’d consider this a tad cleaner - although it is not really rock solid:
irb(main):015:0> x.methods - x.class.instance_methods
=> [:foo, :foo=]
irb(main):016:0> x = OpenStruct.new
=> #
irb(main):017:0> x.foo = 1
=> 1
irb(main):018:0> x.methods - x.class.instance_methods
=> [:foo, :foo=]
Kind regards
robert
jney
3
On Oct 23, 8:03pm, Robert K. [email protected] wrote:
=> true
=> [:foo, :foo=]
–
remember.guy do |as, often| as.you_can - without
endhttp://blog.rubybestpractices.com/
Thank you Robert.
The problem with this method is that the field definition is still
remaining even after delete :
x = OpenStruct.new
=> #
x.foo=1
=> 1
x.methods - x.class.instance_methods
=> [:foo, :foo=]
x.delete_field :foo
=> 1
x.methods - x.class.instance_methods
=> [:foo, :foo=]
jney
4
On Sat, Oct 23, 2010 at 10:15 PM, jney [email protected]
wrote:
x.foo=1
=> 1
x.methods - x.class.instance_methods
=> [:foo, :foo=]
x.delete_field :foo
=> 1
x.methods - x.class.instance_methods
=> [:foo, :foo=]
Hmm I’d consdider this a bug, maybe report this to ruby-core
Cheers
Robert