python - language - ruby vs javascript
`if__name__== ''__main__''` equivalente en Ruby (2)
Soy nuevo para Ruby. Estoy buscando importar funciones de un módulo que contiene una herramienta que quiero seguir usando por separado. En Python simplemente haría esto:
def a():
...
def b():
...
if __name__ == ''__main__'':
a()
b()
Esto me permite ejecutar el programa o importarlo como un módulo para usar a()
y / o b()
separado. ¿Cuál es el paradigma equivalente en Ruby?
Desde el Ruby que he visto en la naturaleza (concedido, no una tonelada), este no es un patrón de diseño estándar de Ruby. Se supone que los módulos y los scripts deben mantenerse separados, por lo que no me sorprendería que no exista una forma buena y limpia de hacerlo.
EDITAR: lo encontré.
if __FILE__ == $0
foo()
bar()
end
Pero definitivamente no es común.
Si el seguimiento de pila está vacío, podemos comenzar a ejecutar a la derecha e izquierda. No sé si se usa de forma convencional o no convencional ya que estoy en Ruby durante aproximadamente una semana.
if caller.length == 0
# do stuff
end
Prueba de concepto:
archivo: test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
archivo: shmest.rb
#!/usr/bin/ruby -I .
require ''test.rb''
puts "Shmest"
Uso:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test