2012-04-28 12 views
5

Estaba mirando un script de Ruby y me encontré con script = $0. He hecho algunas búsquedas en Google, pero no he encontrado una respuesta definitiva sobre lo que hace. Creo que te protege de leer un archivo más grande que la memoria, ¿es correcto?

Gracias, que tienen por debajo del guión completo para que pueda ver en su contexto:

# Takes the name of a file as an argument and assigns to filename 
filename = ARGV.first 
script = $0 

puts "We're going to erase #{filename}." 
puts "If you don't want that, hit CTRL-C (^C)." 
puts "If you do want that, hit RETURN." 

print "? " 
STDIN.gets 

puts "Opening the file..." 
target = File.open(filename, 'w') 

puts "Truncating the file. Goodbye!" 
target.truncate(target.size) 

puts "Now I'm going to ask you for three lines." 

print "line 1: "; line1 = STDIN.gets.chomp() 
print "line 2: "; line2 = STDIN.gets.chomp() 
print "line 3: "; line3 = STDIN.gets.chomp() 

puts "I'm going to write these to the file." 

target.write(line1) 
target.write("\n") 
target.write(line2) 
target.write("\n") 
target.write(line3) 
target.write("\n") 

puts "And finally, we close it." 
target.close() 

Respuesta

11

$0 es una de las variables globales de Ruby. De here:

$ 0 - Contiene el nombre de la secuencia de comandos que se está ejecutando. Puede ser asignable.

+0

El enlace parece estar muerto – raylu

0

¡Oh, el clásico Zed Shaw books! lol El $ 0 obtiene la entrada en la línea de comando antes del primer argumento. Entonces, digamos que debe ejecutar esto a través de la línea de comando usando el intérprete de ruby. Puede poner "ruby (fileName) test.txt" y $ 0 recogerá el archivoName y lo guardará en la variable 'script'. No estoy seguro de por qué lo haces aquí porque lo usas más adelante en el programa, pero eso es todo. La forma en que podría haber probado esto sería imprimir en la pantalla usando pone, pudiera añadir este fragmento de código para ver por sí mismo en alguna parte del código:

puts "The $0 has saved #{script} to it, I wonder where it got that." 

y vea que va a nombre de su archivo.

Cuestiones relacionadas