|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Hello all, How can I use a string variable as part of a method name I'm calling? For example say I want to call the method say_hello using the following: def say_hello puts "Hello!" end str = "hello" say_???? Thanks in advance!! -- BTR |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Alle luned=EC 7 gennaio 2008, Bryan Richardson ha scritto:
> Hello all, > > How can I use a string variable as part of a method name I'm calling? For > example say I want to call the method say_hello using the following: > > def say_hello > puts "Hello!" > end > > str =3D "hello" > > say_???? > > Thanks in advance!! -- BTR send "say_#{str}" Stefano |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
You can use: eval, instance_eval, class_eval, module_eval oder send
The different evals are described here: http://blade.nagaokaut.ac.jp/cgi-bin...by-talk/192513 (click on the "N" to read the next message in the thread) send is as far as I understand it, used to send messages to objects. Keep in mind that method calls are messages send to objects. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
In general, the send method is preferred over evalling a string when possible. In addition to send "say_#{str}", you can do method("say_#{str}".to_sym) call. Dan On 1/7/08, Thomas Wieczorek <wieczo.yo@googlemail.com> wrote: > > You can use: eval, instance_eval, class_eval, module_eval oder send > The different evals are described here: > http://blade.nagaokaut.ac.jp/cgi-bin...by-talk/192513 > (click on the "N" to read the next message in the thread) > send is as far as I understand it, used to send messages to objects. > Keep in mind that method calls are messages send to objects. > > |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Along these same lines, is it possible to do a require and include dynamically, getting the name of the file to require and module to include from a string? On Jan 7, 2008 5:25 PM, Daniel Finnie <danfinnie@optonline.net> wrote: > In general, the send method is preferred over evalling a string when > possible. > > In addition to send "say_#{str}", you can do method("say_#{str}".to_sym) > .call. > > Dan > > > On 1/7/08, Thomas Wieczorek <wieczo.yo@googlemail.com> wrote: > > > > You can use: eval, instance_eval, class_eval, module_eval oder send > > The different evals are described here: > > http://blade.nagaokaut.ac.jp/cgi-bin...by-talk/192513 > > (click on the "N" to read the next message in the thread) > > send is as far as I understand it, used to send messages to objects. > > Keep in mind that method calls are messages send to objects. > > > > > |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
require is obvious, the method takes a string already. Including a module, I think you can do: ClassName.send(:include, Module.const_get("ModuleName")) or if you're working with an instance variable, replace :include with :extend. Jason On Jan 8, 2008 5:25 PM, Bryan Richardson <btricha@gmail.com> wrote: > Along these same lines, is it possible to do a require and include > dynamically, getting the name of the file to require and module to include > from a string? > > On Jan 7, 2008 5:25 PM, Daniel Finnie <danfinnie@optonline.net> wrote: > > > In general, the send method is preferred over evalling a string when > > possible. > > > > In addition to send "say_#{str}", you can do method("say_#{str}".to_sym) > > .call. > > > > Dan > > > > > > On 1/7/08, Thomas Wieczorek <wieczo.yo@googlemail.com> wrote: > > > > > > You can use: eval, instance_eval, class_eval, module_eval oder send > > > The different evals are described here: > > > http://blade.nagaokaut.ac.jp/cgi-bin...by-talk/192513 > > > (click on the "N" to read the next message in the thread) > > > send is as far as I understand it, used to send messages to objects. > > > Keep in mind that method calls are messages send to objects. > > > > > > > > > |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
send :include, Module.const_get(ARGV[1]) worked. Thanks!! On Jan 8, 2008 3:47 PM, Jason Roelofs <jameskilton@gmail.com> wrote: > require is obvious, the method takes a string already. > > Including a module, I think you can do: > > ClassName.send(:include, Module.const_get("ModuleName")) > > or if you're working with an instance variable, replace :include with > :extend. > > Jason > > On Jan 8, 2008 5:25 PM, Bryan Richardson <btricha@gmail.com> wrote: > > > Along these same lines, is it possible to do a require and include > > dynamically, getting the name of the file to require and module to > include > > from a string? > > > > On Jan 7, 2008 5:25 PM, Daniel Finnie <danfinnie@optonline.net> wrote: > > > > > In general, the send method is preferred over evalling a string when > > > possible. > > > > > > In addition to send "say_#{str}", you can do > method("say_#{str}".to_sym) > > > .call. > > > > > > Dan > > > > > > > > > On 1/7/08, Thomas Wieczorek <wieczo.yo@googlemail.com> wrote: > > > > > > > > You can use: eval, instance_eval, class_eval, module_eval oder send > > > > The different evals are described here: > > > > http://blade.nagaokaut.ac.jp/cgi-bin...by-talk/192513 > > > > (click on the "N" to read the next message in the thread) > > > > send is as far as I understand it, used to send messages to objects. > > > > Keep in mind that method calls are messages send to objects. > > > > > > > > > > > > > > |
|
![]() |
| Outils de la discussion | |
|
|