[~/rubytesting/TheRubyProgrammingLanguage/Chapter7ClassesAndModules]$ irb ruby-1.9.2-head :001 > Math.sin(Math::PI/2) => 1.0 ruby-1.9.2-head :002 > include Math => Object ruby-1.9.2-head :003 > sin(PI/2) => 1.0
module_function, un método de instancia privado
de Module para convertir en module functions a los métodos
cuyos nombres le pases como argumentos
~/srcLPP/Chapter7ClassesAndModules/modules]$ cat module_function.rb
module SpaceOdissey
THE_UNIVERSE = 1
def tutu
"inside tutu"
end
module_function :tutu
end
puts SpaceOdissey::THE_UNIVERSE
puts SpaceOdissey::tutu
include SpaceOdissey
puts THE_UNIVERSE
puts tutu
Ejecución:
[~/srcLPP/Chapter7ClassesAndModules/modules]$ ruby module_function.rb 1 inside tutu 1 inside tutuCuando se define una función-módulo se debe evitar hacer uso de
self
ya que el valor de self hará que dependa de como es invocada.
Casiano Rodriguez León 2015-01-07