[~/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 tutuEjecució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