Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #2616 > unrolled thread
| Started by | Lars Olsson <lasso@lassoweb.se> |
|---|---|
| First post | 2011-04-11 02:19 -0700 |
| Last post | 2011-04-14 12:07 -0500 |
| Articles | 3 on this page of 23 — 4 participants |
Back to article view | Back to comp.lang.ruby
Copying parameters to singleton class Lars Olsson <lasso@lassoweb.se> - 2011-04-11 02:19 -0700
Re: Copying parameters to singleton class Robert Klemme <shortcutter@googlemail.com> - 2011-04-11 04:34 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-11 21:21 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-11 21:05 -0500
Re: Copying parameters to singleton class Robert Klemme <shortcutter@googlemail.com> - 2011-04-12 01:53 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 13:31 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 19:08 -0500
Re: Copying parameters to singleton class Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-11 04:36 -0500
Re: Copying parameters to singleton class Lars Olsson <lasso@lassoweb.se> - 2011-04-11 02:53 -0700
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-11 21:48 -0500
Re: Copying parameters to singleton class Robert Klemme <shortcutter@googlemail.com> - 2011-04-12 02:00 -0500
Re: Copying parameters to singleton class Lars Olsson <lasso@lassoweb.se> - 2011-04-12 01:25 -0700
Re: Copying parameters to singleton class Robert Klemme <shortcutter@googlemail.com> - 2011-04-12 03:51 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 13:14 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 13:38 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 13:43 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-12 19:29 -0500
Re: Copying parameters to singleton class Lars Olsson <lasso@lassoweb.se> - 2011-04-13 01:49 -0700
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-13 19:32 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-13 19:49 -0500
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-13 20:09 -0500
Re: Copying parameters to singleton class Lars Olsson <lasso@lassoweb.se> - 2011-04-14 01:33 -0700
Re: Copying parameters to singleton class 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-14 12:07 -0500
Page 2 of 2 — ← Prev page 1 [2]
| From | 7stud -- <bbxx789_05ss@yahoo.com> |
|---|---|
| Date | 2011-04-13 20:09 -0500 |
| Message-ID | <1d44884d670300413b19bb7a949f0a22@ruby-forum.com> |
| In reply to | #2804 |
7stud -- wrote in post #992632:
> Try something like this:
>
> def using(new_options)
> Class.new(self) do
> old_options = superclass.options
> common_keys = old_options.keys & new_options.keys
>
> common_keys.each do |key|
> old_options[key] = new_options[key]
> end
>
> @options = old_options
> @options.freeze
> end
> end
Whoops. That doesn't work:
prog.rb:18:in `[]=': can't modify frozen hash (RuntimeError)
Hmmm...why can you merge() but not directly assign to individual keys
when a hash is frozen?
Ok, merge() with some better variable names:
def using(new_options)
Class.new(self) do
old_options = superclass.options
@options = old_options.merge(new_options).select do |key|
old_options.has_key?(key)
end.freeze
end
end
--
Posted via http://www.ruby-forum.com/.
[toc] | [prev] | [next] | [standalone]
| From | Lars Olsson <lasso@lassoweb.se> |
|---|---|
| Date | 2011-04-14 01:33 -0700 |
| Message-ID | <e06738ad-4e68-4456-9bf2-4aedacb237c3@r14g2000vbm.googlegroups.com> |
| In reply to | #2805 |
On 14 Apr, 03:09, 7stud -- <bbxx789_0...@yahoo.com> wrote:
> 7stud -- wrote in post #992632:
>
> > Try something like this:
>
> > def using(new_options)
> > Class.new(self) do
> > old_options = superclass.options
> > common_keys = old_options.keys & new_options.keys
>
> > common_keys.each do |key|
> > old_options[key] = new_options[key]
> > end
>
> > @options = old_options
> > @options.freeze
> > end
> > end
>
> Whoops. That doesn't work:
>
> prog.rb:18:in `[]=': can't modify frozen hash (RuntimeError)
>
> Hmmm...why can you merge() but not directly assign to individual keys
> when a hash is frozen?
>
> Ok, merge() with some better variable names:
>
> def using(new_options)
> Class.new(self) do
> old_options = superclass.options
>
> @options = old_options.merge(new_options).select do |key|
> old_options.has_key?(key)
> end.freeze
> end
> end
>
> --
> Posted viahttp://www.ruby-forum.com/.
Hi!
Even though I agress that using the same name for both the local
parameter and a method with the same name might be a bad idea, my code
still works without any problem. If I redefine self using to:
(minor change to last version. I split up the calls to merge, select,
and freeze to its own rows.)
def self.using(options)
Class.new(self) do
puts "Superclass options: #{superclass.options.inspect}"
puts "Options from parameter: #{options}"
@options = superclass.options.merge(options)
@options.select! { |key, value| superclass.options.has_key?
(key) }
@options.freeze
end
end
it clearly shows that options (by itself) refers to the local paramter
and not the class name.
/lasso
[toc] | [prev] | [next] | [standalone]
| From | 7stud -- <bbxx789_05ss@yahoo.com> |
|---|---|
| Date | 2011-04-14 12:07 -0500 |
| Message-ID | <67ce62e5cd8caf2df57fce35c89881ed@ruby-forum.com> |
| In reply to | #2833 |
Lars Olsson wrote in post #992715: > On 14 Apr, 03:09, 7stud -- <bbxx789_0...@yahoo.com> wrote: >> > old_options[key] = new_options[key] >> >> old_options.has_key?(key) >> end.freeze >> end >> end >> >> -- >> Posted viahttp://www.ruby-forum.com/. > > Hi! > > Even though I agress that using the same name for both the local > parameter and a method with the same name might be a bad idea, my code > still works without any problem. If I redefine self using to: > There's working code, and there's clear code. The goal: working code that is clear! > Hmmm...why can you merge() but not directly assign to > individual keys when a hash is frozen? Duh. Because merge() produces a new hash--it doesn't change the frozen hash. -- Posted via http://www.ruby-forum.com/.
[toc] | [prev] | [standalone]
Page 2 of 2 — ← Prev page 1 [2]
Back to top | Article view | comp.lang.ruby
csiph-web