Ronnie Aa wrote in post #995637:
> Could this problem be solved with a procedure also???

There are no procedures in Ruby - only methods.

If you want a standalone method, which doesn't really belong to any 
particular object instance, IMO the cleanest way is to make it a module 
method:

module Util
  def self.product(arr)
    arr.inject { |x,y| x*y }
  end
end

p Util.product([1,2,3])

(Of course, Util is an instance of class Module, so the method *does* 
actually belong to an object instance. The module is just a useful place 
to hang the method onto with its own namespace)

Then you can put this module into a separate file, util.rb, and it's 
easy to re-use from other code.

There is a slightly different syntax which you will occasionally come 
across:

module Util
  def product(arr)
    arr.inject { |x,y| x*y }
  end
  module_function :product
end

# Now you can can call Util.product, but you can also mix the Util
# module into your own classes.

class Foo
  include Util
  def doit(arr)
    product(arr)
  end
end

p Util.product([1,2,3])  # => 6
p Foo.new.doit([4,5,6])  # => 120

Incidentally, a really good source of info on Ruby is
http://www.ruby-doc.org/docs/ProgrammingRuby/
This is the free 1st edition, which is old but still relevant. You can 
also buy fthe 2nd edition for ruby 1.8, or the 3rd edition for ruby 1.9, 
in paper or PDF form.

Regards,

Brian.

-- 
Posted via http://www.ruby-forum.com/.