I have this script with slight change from “The Little Book Of Ruby”:
http://pastie.org/private/6wgnmrtsodlmbh3ib1vg
If I type the following: puts MyModule.greet
I get the required result.
But, there is an instance method inside the module “greet”. How can I
call that method at the time modules CANNOT be instantiated?
Thanks.
And, a small thing here. Can we say that “Modules” in Ruby are like
“Packages” in Java?
Thanks.
On Wed, Jul 14, 2010 at 6:33 PM, Abder-Rahman A.
[email protected] wrote:
I have this script with slight change from “The Little Book Of Ruby”:
http://pastie.org/private/6wgnmrtsodlmbh3ib1vg
If I type the following: puts MyModule.greet
I get the required result.
But, there is an instance method inside the module “greet”. How can I
call that method at the time modules CANNOT be instantiated?
Include it in a class
class MyClass
include MyModule
end
a = MyClass.new
a.greet
martin
On Wed, Jul 14, 2010 at 6:39 PM, Abder-Rahman A.
[email protected] wrote:
And, a small thing here. Can we say that “Modules” in Ruby are like
“Packages” in Java?
Modules in ruby serve a dual role as namespaces and mixins. You can
think of a mixin as a Java interface, but one that can have concrete
methods.
Check out the following:
http://ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html
and play with some code till it clicks. It’s a very useful part of the
language.
martin
Thanks a lot Martin. Yes, “include” was the missing part.
A small thing here:
When I type:
puts MyModule::GOODMOODE
In the purpose of accessing a module’s constant, I get the following:
uninitialized constant MyModule::GOODMOODE (NameError)
Although having the include.
How can I access a module’s constant.
And, when reading about modules, the resources I saw so far mention that
modules includes:
1- Constants.
2- Methods.
3- Classes.
Don’t they include variables?!
Thanks.
In your private pastie, you have GOODMOOD, not GOODMOODE. I think this
could be why. Accessing MyModule::GOODMOOD worked.
On Wed, Jul 14, 2010 at 09:45, Abder-Rahman A.
Steve Kim wrote:
In your private pastie, you have GOODMOOD, not GOODMOODE. I think this
could be why. Accessing MyModule::GOODMOOD worked.
On Wed, Jul 14, 2010 at 09:45, Abder-Rahman A.
Thanks everyone for your replies.