Following from yesterday I have a few more Ruby questions.
Can someone please explain what 'self' does in the following:
module Mod1
def self.a_method
puts 'a'
end
def b_method
puts 'b'
end
end
If self isn't specificed I'm unable to call the method. ex.
Mod1::b_method fails.
I've scoured on-line docs about module and come up empty.
Next. What does '/upload' mean in:
class Upload < R '/upload'
This is from:
http://www.oreillynet.com/ruby/blog/2007/01/the_joy_of_rolling_your_own_wi.html
Thanks.
···
---
Neville Franks, http://www.getsoft.com http://www.surfulater.com
--
Posted via http://www.ruby-forum.com/.
Following from yesterday I have a few more Ruby questions.
Can someone please explain what 'self' does in the following:
module Mod1
def self.a_method
puts 'a'
end
def b_method
puts 'b'
end
end
If self isn't specificed I'm unable to call the method. ex.
Mod1::b_method fails.
So in this particular case, 'self' here refers to the Module called
Mod1. Your code defines a method (a_method) on the module itself which
allows you to call it with the :: syntax.
The other method (b_method) is merely a method defined inside the
module. In this case the module is acting as a namespace. If you
'include' this module somewhere in your code you'll be adding the
b_method to that place (scope?)
(disclaimer: I'm still learning ruby myself, so that may not be the
best answer ever, but it is how I understand it... And knowing these
guys these days I'll be corrected if I'm wrong, mere moments from
now.)
Next. What does '/upload' mean in:
class Upload < R '/upload'
This is from:
O'Reilly Media - Technology and Business Training
Right here you're fishing in _why territory (specifically the camping
framework) where things are way over my head, someone else will have
to help you there.
hth,
-Harold
···
On 1/27/07, Neville Franks <subs@surfulater.com> wrote:
Following from yesterday I have a few more Ruby questions.
Can someone please explain what 'self' does in the following:
module Mod1
def self.a_method
puts 'a'
end
def b_method
puts 'b'
end
end
If self isn't specificed I'm unable to call the method. ex.
Mod1::b_method fails.
I've scoured on-line docs about module and come up empty.
I see people already helped you with this one
Next. What does '/upload' mean in:
class Upload < R '/upload'
This is the beginning of a controller definition in the Camping
microframework. The class is "inheriting" from the method R() which
takes a regex argument of the route to bind to. The R() method then
adds some meta-info to the runtime, and returns an anonymous class
that Upload actually inherits from.
···
On 1/26/07, Neville Franks <subs@surfulater.com> wrote:
This is from:
http://www.oreillynet.com/ruby/blog/2007/01/the_joy_of_rolling_your_own_wi.html
Thanks.
---
Neville Franks, http://www.getsoft.com http://www.surfulater.com
--
Posted via http://www.ruby-forum.com/\.
--
Chris Carter
concentrationstudios.com
brynmawrcs.com
No problemo.
In comparison to C++, your a_method is (kinda sorta) like a static
method, but not really, but kindof because you can use the :: syntax
to call it.
b_method is more like a method belonging to a class which you're
inheriting. The instances of your new class can call b_method
(assuming you've included Mod1) ...
Ruby only supports single inheritance directly, but you can emulate
multiple inheritance like this by just including multiple modules into
your class... I believe the rubyists like to call this mixing-in...
hth,
-Harold
···
On 1/27/07, Neville Franks <subs@surfulater.com> wrote:
Harold Hausman wrote:
>
> The other method (b_method) is merely a method defined inside the
> module. In this case the module is acting as a namespace. If you
> 'include' this module somewhere in your code you'll be adding the
> b_method to that place (scope?)
>
Harold,
Thanks for that. I figured I understood the use of self, but assumed it
was redundant and therefore I couldn't see the difference between
a_method and b_method. Now I get it. In my C++ world we don't qualify
methods like this.
So I assume that:
module Mod1
def self.a_method
puts 'a'
end
end
is identical to:
module Mod1
def Mod1.a_method
puts 'a'
end
end
···
---
Neville Franks, http://www.getsoft.com http://www.surfulater.com
--
Posted via http://www.ruby-forum.com/.
indeed.
(apologies to anyone not reading this in a threaded fashion for the
extremely short reply.)
-Harold
···
On 1/27/07, Neville Franks <subs@surfulater.com> wrote:
So I assume that:
module Mod1
def self.a_method
puts 'a'
end
end
is identical to:
module Mod1
def Mod1.a_method
puts 'a'
end
end