Hello,
how should I group some stateless functions into a module and use them
in a very simple way without littering the namespace? E.g. if the
module is ``Foo'' with at least one function foo, then I'd like to use
that module in a way as simple like that:
require 'Foo'
puts Foo.foo("world")
The first solution that I've found is to write Foo.rb like follows:
module Foo
def foo(s)
"Hello, #{s}\n"
end
end
class << Foo
include Foo
end
Is that Ok? Or is there even a simpler way?
Regards
Thomas
That is fine. There are several variations:
module Foo
def foo(s)
"Hello, #{s}\n"
end
extend self
end
Your example and my variation enable the module to
respond to *all* of its instance methods.
If you only want the module to respond to some of its instance
methods you'll want to look at the following variations:
module Foo
def foo(s)
"Hello, #{s}\n"
end
module_function :foo
end
or
module Foo;end
def Foo.foo(s)
"Hello, #{s}\n"
end
Gary Wright
···
On Apr 8, 2007, at 7:10 PM, Thomas Hafner wrote:
The first solution that I've found is to write Foo.rb like follows:
module Foo
def foo(s)
"Hello, #{s}\n"
end
end
class << Foo
include Foo
end
module Foo
def self.foo( msg )
puts "Hello #{msg}"
end
end
···
On Apr 8, 5:05 pm, Thomas Hafner <tho...@hafner.NL.EU.ORG> wrote:
how should I group some stateless functions into a module and use them
in a very simple way without littering the namespace? E.g. if the
module is ``Foo'' with at least one function foo, then I'd like to use
that module in a way as simple like that:
require 'Foo'
puts Foo.foo("world")