Class << Foo; include Foo; end


#1

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


#2

On Apr 8, 2007, at 7:10 PM, Thomas H. wrote:

end
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 W.


#3

On Apr 8, 5:05 pm, Thomas H. removed_email_address@domain.invalid 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”)

module Foo
def self.foo( msg )
puts “Hello #{msg}”
end
end