ruby-on-rails - rails - ruby if and
En Ruby, ¿qué significa "=>" y cómo funciona? (5)
Además de En Ruby, ¿qué significa "=>" y cómo funciona? :
En su mayoría verá el =>
para definir parámetros para una función. Piense en esto como una buena conveniencia: no necesita recordar el orden correcto de sus parámetros, ya que todos los parámetros están envueltos en un hash gigante. Entonces, si tienes un método simple de ayuda como
link_to "My link", my_path, :confirm => "Are you sure?"
esto es mucho mejor que
link_to "My link", my_path, null, null, null, null, "Are you sure?"
solo porque quiere usar un parámetro poco utilizado. Por lo tanto, pasar los parámetros con un hash es solo una convención en Ruby / Rails para facilitar la vida.
Esta pregunta ya tiene una respuesta aquí:
Mientras aprendía Ruby, me encontré con el operador "=>" ocasionalmente. Por lo general, lo veo en forma de
:symbol => value
y parece ser usado frecuentemente al pasar valores a funciones. ¿Cómo se llama exactamente ese operador? ¿Qué significa / significa? ¿Está integrado en Ruby o es algo que marcos diferentes como Rails y DataMapper agregan a la clase de símbolo? ¿Se usa solo junto con la clase de símbolo? Gracias.
Es posible que escuche a este operador como un "cohete hash", lo que significa que lo usa para definir un hash ruby.
Esta es la documentación de Ruby Hash, si no está familiarizado: http://www.ruby-doc.org/core/classes/Hash.html
Tenga en cuenta que en Ruby 1.9, si está definiendo un hash que usa símbolos como claves, ahora hay una sintaxis alternativa disponible para usted: http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax
Si quieres hacer más Google, =>
veces se llama hashrocket, porque parece un cohete (en el mismo sentido que <=>
parece una nave espacial), y se usa en hashes.
O podrías usar SymbolHound .
Sugerencia: si lo está usando en un hash como {:a => "A", :b => "B"}
, en Ruby 1.9, puede usarlo como un hash JSON:
{
a: "A",
b: "B"
}
=>
separa las claves de los valores en un literal hashmap. No se puede descargar y no está específicamente conectado a símbolos.
Un hashmap literal tiene la forma {key1 => value1, key2 => value2, ...}
, pero cuando se usa como el último parámetro de una función, puede dejar las llaves. Entonces, cuando ve una llamada de función como f(:a => 1, :b => 2)
,: f(:a => 1, :b => 2)
, f
se llama con un argumento, que es un hashmap que tiene las teclas :a
y :b
y los valores 1
y 2
.