Inclusione di moduli

Se eseguo questo, ricevo il seguente errore da ruby:

undefined method `random’ for Modulo1:Module (NoMethodError)

if FILE == $0

module Modulo1

def random

return rand(200)

end

end

puts Modulo1.random

end

utilizzo: ruby 1.9.2 su ubuntu 10.0.4

Non riesco a capire il motivo…

Ciao,
tu chiami un metodo di classe, quindi il tuo codice va scritto cos:

if FILE == $0
module Modulo1
def self.random
return rand(200)
end
end
puts Modulo1.random
end

quihttp://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/trovi
una buona spiegazione sull definizione dei metodi

dovresti riscriverlo come class method, non come instance method:

module Modulo1
def self.random # puoi anche usare ‘Modulo1’ come prefisso, ma ‘self’
pi comodo e flessibile :stuck_out_tongue:
return rand(200)
end
end

ciao,
A.

Il 08/11/2010 12:26, Vogon P. ha scritto: