Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #2699
| From | 7stud -- <bbxx789_05ss@yahoo.com> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | Re: Copying parameters to singleton class |
| Date | 2011-04-12 13:14 -0500 |
| Organization | Service de news de lacave.net |
| Message-ID | <603155d85e9b5df9cd7a2ff90951f539@ruby-forum.com> (permalink) |
| References | <e7b941e2-199e-423b-97bb-7fee63905659@hg8g2000vbb.googlegroups.com> <50e4e16f7201aad2c97a193b4a2cfb82@ruby-forum.com> <BANLkTintiH8T4pwVHKdXKCK=VvMDfYp0bA@mail.gmail.com> <fda30fbb-e519-4373-bda6-c3e6b2af7c73@r6g2000vbo.googlegroups.com> |
Lars Olsson wrote in post #992249:
> Hello again!
>
I was fooling around with your original requirement:
> I want to create a class method that takes a bunch
> of options and returns a singleton class with those
> options set,
..and I think I was probably running into the same problems you were:
class Object
def singleton_class
class << self
self
end
end
end
class Opportunities
def self.using(options)
# Store options in singleton class variable
# @options and then return singleton class
obj = self.new
singleton = obj.singleton_class
singleton.instance_variable_set(:@options, options)
singleton.class_eval do #<----PROBLEM HERE
def options
@options
end
end
singleton
end
end
Foo = Opportunities.using(one: 1, two: 2, three: 3)
Bar = Opportunities.using(four: 4, five: 5, six: 6)
p Foo.options
p Bar.options
--output:--
prog.rb:37:in `<main>': undefined method `options' for
#<Class:#<Opportunities:0x88cfef8>> (NoMethodError)
The problem is that options() is an instance method of the singleton
class, but in this line:
Foo.options
Foo is the singelton class, and therefore options() is being called as a
class method of the singleton class. A class method of a singleton
class??!! You can actually create such a thing in ruby:
class Object
def singleton_class
class << self
self
end
end
end
class Opportunities
def self.using(options)
# Store options in singleton class variable
# @options and then return singleton class
obj = self.new
singleton = obj.singleton_class
singleton.send(:instance_variable_set, :@options, options)
singleton.singleton_class.class_eval do #<---SOLUTION***
def options
@options
end
end
singleton
end
end
Foo = Opportunities.using(one: 1, two: 2, three: 3)
Bar = Opportunities.using(four: 4, five: 5, six: 6)
p Foo.options
p Bar.options
--output:--
{:one=>1, :two=>2, :three=>3}
{:four=>4, :five=>5, :six=>6}
--
Posted via http://www.ruby-forum.com/.
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
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
csiph-web