|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi Guys,
I am trying to use define_method like: class TestClass def initialize define_method("hello") { || puts "Hello" } end end x = TestClass.new x.hello I am always getting: NoMethodError: undefined method `define_method' Do I need to require something? Am I doing something wrong, or am I completely missing the boat!? Any appreciated! Thanks, Malcolm. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Nov 6, 11:37 pm, "Malcolm Lockyer" <maxpeng...@gmail.com> wrote: > Hi Guys, > > I am trying to use define_method like: def selfclass (class << self; self; end) end class TestClass def initialize selfclass.send(:define_method, "hello") { || puts "Hello" } end end x = TestClass.new x.hello |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
You are getting this error since define_method is defined in Module
not Object. Your object needs to call define_method against it's Class definition, not self. Here's an example how to use it. http://www.ruby-doc.org/core/classes...e.html#M001677 Best, Jake On Nov 6, 2007, at 10:37 PM, Malcolm Lockyer wrote: > Hi Guys, > > I am trying to use define_method like: > > class TestClass > def initialize > define_method("hello") { || puts "Hello" } > end > end > > x = TestClass.new > x.hello > > I am always getting: > NoMethodError: undefined method `define_method' > > Do I need to require something? Am I doing something wrong, or am I > completely missing the boat!? > > > Any appreciated! > > Thanks, > Malcolm. > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
2007/11/7, Malcolm Lockyer <maxpenguin@gmail.com>:
> Hi Guys, > > I am trying to use define_method like: > > class TestClass > def initialize > define_method("hello") { || puts "Hello" } > end > end > > x = TestClass.new > x.hello > > I am always getting: > NoMethodError: undefined method `define_method' > > Do I need to require something? Am I doing something wrong, or am I > completely missing the boat!? Is this really your use case? Since you know which method you define, you can do it with a normal def anyway. So I suspect that you are doing something else. What exactly is it? Kind regards robert -- use.inject do |as, often| as.you_can - without end |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Hey, thanks for the replies guys, I am pretty noob with ruby so thanks
for your . Yes Robert, that wasn't my use case - that was just the most simplified code that shows the problem I was having. I didn't want to bore you all with loads of irrelevant code. If you are interested I was trying to build a dynamic enumeration style class (vaguely similar to java or c#'s way of doing it), where I could have the pseudo constant (i.e. TestClass.Blue, TestClass.Red etc.) setup by calling the constructor something like TestClass.new(:Blue => 1, :Red => 2 etc.) and also be able to iterate through the keys and stuff. Anyway, thanks again for your guys. Malcolm On 11/8/07, Malcolm Lockyer <malcolm@endev.co.nz> wrote: > Hey, thanks for the replies guys, I am pretty noob with ruby so thanks > for your . > > Yes Robert, that wasn't my use case - that was just the most > simplified code that shows the problem I was having. I didn't want to > bore you all with loads of irrelevant code. If you are interested I > was trying to build a dynamic enumeration style class (vaguely similar > to java or c#'s way of doing it), where I could have the pseudo > constant (i.e. TestClass.Blue, TestClass.Red etc.) setup by calling > the constructor something like TestClass.new(:Blue => 1, :Red => 2 > etc.) and also be able to iterate through the keys and stuff. > > > Anyway, thanks again for your guys. > Malcolm > > On 11/8/07, Robert Klemme <shortcutter@googlemail.com> wrote: > > 2007/11/7, Malcolm Lockyer <maxpenguin@gmail.com>: > > > Hi Guys, > > > > > > I am trying to use define_method like: > > > > > > class TestClass > > > def initialize > > > define_method("hello") { || puts "Hello" } > > > end > > > end > > > > > > x = TestClass.new > > > x.hello > > > > > > I am always getting: > > > NoMethodError: undefined method `define_method' > > > > > > Do I need to require something? Am I doing something wrong, or am I > > > completely missing the boat!? > > > > Is this really your use case? Since you know which method you define, > > you can do it with a normal def anyway. So I suspect that you are > > doing something else. What exactly is it? > > > > Kind regards > > > > robert > > > > -- > > use.inject do |as, often| as.you_can - without end > > > > > |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Please do not top post. On 07.11.2007 22:19, Malcolm Lockyer wrote: > Yes Robert, that wasn't my use case - that was just the most > simplified code that shows the problem I was having. I didn't want to > bore you all with loads of irrelevant code. If you are interested I > was trying to build a dynamic enumeration style class (vaguely similar > to java or c#'s way of doing it), where I could have the pseudo > constant (i.e. TestClass.Blue, TestClass.Red etc.) setup by calling > the constructor something like TestClass.new(:Blue => 1, :Red => 2 > etc.) and also be able to iterate through the keys and stuff. In case you are not doing it for the fun of it and / or are looking for more inspirations this is a good place to look: http://raa.ruby-lang.org/search.rhtml?search=enum Kind regards robert |
|
![]() |
| Outils de la discussion | |
|
|