# Defining a module in one file
module M
def f(x)
....
end
end
# Using the module in another file
require 'M'
include M
f(45)
Sometimes I would find it more convenient to *not* inject
the module's namespace into the user's namespace, i.e. to
do it without the include statement. I thought it would
be easy to qualify the foreign function with the module
name:
# Using the module in another file
# (this does not work)
require 'M'
M::f(45) # Error: undefined method 'f'
Maybe I'm thinking to Perlish here. Can it be done what I want
to achieve, and how?
# Defining a module in one file
module M
def f(x)
....
end
end
# Using the module in another file
require 'M'
include M
f(45)
Sometimes I would find it more convenient to *not* inject
the module's namespace into the user's namespace, i.e. to
do it without the include statement. I thought it would be easy to qualify the foreign function with the module
name:
# Using the module in another file
# (this does not work)
require 'M'
M::f(45) # Error: undefined method 'f'
Maybe I'm thinking to Perlish here. Can it be done what I want
to achieve, and how?
Not sure if it's what you want, but if you define M as follows it works:
> Sometimes I would find it more convenient to *not* inject
> the module's namespace into the user's namespace, i.e. to
> do it without the include statement. I thought it would
> be easy to qualify the foreign function with the module
> name:
>
> # Using the module in another file
> # (this does not work)
> require 'M'
> M::f(45) # Error: undefined method 'f'
>
> Maybe I'm thinking to Perlish here. Can it be done what I want
> to achieve, and how?
Not sure if it's what you want, but if you define M as
follows it works:
Don't mention it BTW, Just to make sure you know, you can't use
Micheal's solution if you still want the option of including the
Module elsewhere. In effect using module_function is the same as:
module M
def self.f(x)
....
end
def f(x)
....
end
private :f
end
Probably you've already figured that out, but just in case...
T.
···
On Jul 2, 5:34 am, "Ronald Fischer" <ronald.fisc...@venyon.com> wrote:
> # Defining a module in one file
> module M
> module_function # <<<<<<<<< HERE
> def f(x)
> ....
> end
> end
Thank you, this is indeed one solution to my problem (though in the
end, I'm going to stick with Michael Hollins' proposal).
BTW, Just to make sure you know, you can't use
Micheal's solution if you still want the option of including the
Module elsewhere. In effect using module_function is the same as:
module M
def self.f(x)
....
end
def f(x)
....
end
private :f
end
I wasn't aware that the instance functions would then go private,
but in my case this would be no problem anyway.