¿Son iguales o hay diferencias sutiles entre los dos comandos?¿Cuál es la diferencia entre gets.chomp() vs. STDIN.gets.chomp()?
Respuesta
gets
usará Kernel#gets
, que primero intenta leer el contenido de los archivos pasados a través de ARGV
. Si no hay archivos en ARGV
, utilizará la entrada estándar en su lugar (momento en el que es el mismo que STDIN.gets
Nota:.. Como echristopherson señaló, Kernel#gets
realmente caer de nuevo a $stdin
, no STDIN
Sin embargo, a menos que asignar $stdin
a una corriente de entrada diferente, será idéntica a STDIN
por defecto.
http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-gets
gets.chomp() = leer ARGV primera
STDIN.gets.chomp() = leer la entrada del usuario
Esta es la respuesta más simple y mejor. – James
porque si hay cosas en ARGV, el valor predeterminado se trata método para tratar el primero como un archivo y leer de eso. Para leer de la entrada del usuario (es decir, stdin) en tal situación, debe usar STDIN.gets explícitamente.
Si el archivo es color.rb
first, second, third = ARGV
puts "Your first fav color is: #{first}"
puts "Your second fav color is: #{second}"
puts "Your third fav color is: #{third}"
puts "what is your least fav color?"
least_fav_color = gets.chomp
puts "ok, i get it, you don't like #{least_fav_color} ?"
y se ejecuta en el terminal de
$ ruby color.rb blue yellow green
se generará un error (no hay tal error de archivo)
ahora reemplazar 'consigue .chomp 'por' stdin.gets.chomp 'en la línea siguiente
least_fav_color = $stdin.gets.chomp
y se ejecutan en el terminal el comando
$ ruby color.rb blue yellow green
entonces su programa se ejecuta tras !!
Básicamente, una vez que ha comenzado a llamar a ARGV desde el principio (como ARGV está diseñado) gets.chomp ya no puede hacer su trabajo correctamente. Es hora de traer la gran artillería: $ stdin.gets.chomp
Cinturón blanco de rubí que actualmente cincela a través de las paredes de granito de Ruby the Hard Way y este capítulo me dejó perplejo hasta que encontré tu explicación. ¡Gracias por esto! – user2136000
- 1. ¿Cuál es la diferencia entre() vs [] vs {}?
- 2. Cuál es la diferencia entre colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 3. Char.IsDigit() vs Char.IsNumber(), ¿cuál es la diferencia?
- 4. Cuál es la diferencia entre String (value) vs value.toString()
- 5. ¿Cuál es la diferencia entre X = X ++; vs X ++ ;?
- 6. ¿Cuál es la diferencia entre Cassandra vs Oracle Coherence?
- 7. ¿Cuál es la diferencia entre "git reset" vs "git rebase"?
- 8. ¿Cuál es la diferencia entre Selenium's Remote Control vs WebDriver?
- 9. ¿Cuál es la diferencia entre Console.WriteLine() vs Debug.WriteLine()?
- 10. ¿Cuál es la diferencia entre "origen maestro" vs "origen/maestro"
- 11. ¿Cuál es la diferencia entre html.AttributeEncode vs html.Encode?
- 12. ¿Cuál es la diferencia entre Solr vs Websolr?
- 13. ¿Cuál es la diferencia entre ser db_owner vs. db_datareader/db_datawriter?
- 14. Mysql: ¿Cuál es la diferencia entre "slow_query_log" vs "log_slow_queries"
- 15. ¿Cuál es la diferencia entre process.cwd() vs __dirname?
- 16. ¿cuál es la diferencia entre ResultSetExtractor vs Rowmapper?
- 17. EQU vs DC.B. ¿Cuál es la diferencia?
- 18. JIT vs NGen: ¿cuál es la diferencia?
- 19. CATALINA_OPTS vs JAVA_OPTS - ¿Cuál es la diferencia?
- 20. SET vs. SELECT - ¿Cuál es la diferencia?
- 21. node.js vs. meteor.js ¿cuál es la diferencia?
- 22. ¿Cuál es la diferencia entre Python vs Jython vs IronPython vs wxPython?
- 23. ¿Cuál es la diferencia entre el
- 24. ¿Cuál es la diferencia entre {0} y ""?
- 25. Cuál es la diferencia entre = y: =
- 26. ¿Cuál es la diferencia entre codificar/decodificar?
- 27. ¿Cuál es la diferencia entre .ToString (+) y ""
- 28. ¿Cuál es la diferencia entre esos dos?
- 29. Cuál es la diferencia entre $ (...) y `...`
- 30. ¿Cuál es la diferencia entre window.innerWidth window.outerWidth?
Gracias por la explicación. Tuvimos dificultades para ver la diferencia en la documentación. – stanigator
¿No vuelve a $ stdin, que a menudo pasa a ser lo mismo que STDIN? – echristopherson
Buena llamada, actualizada. –