Dadoparéntesis en las variables de bloque
a = [[:a, :b, :c]]
1) Entiendo que esta
a.each{|(x, y), z| p z} # => :b
que hay dos variables (x, y)
y z
, por lo que el tercer elemento :c
se tira, y z
partidos :b
. Y entiendo esta
a.each{|(x, y), z| p y} # => nil
que (x, y)
partidos :a
, y ya que no es una matriz, no existen elementos que permitan, y así y
partidos nil
.
Pero, ¿cómo
a.each{|(x, y), z| p x} # => :a
trabajo? Espero que se devuelva nil
.
2) ¿Por qué son los valores de retorno así?
a.each{|(x, y)| p x} #=> :a
a.each{|(x, y)| p y} #=> :b
les esperan a ambos vuelven nil
.
Bien, entonces en el primer caso, la asignación inteligente tiene lugar dos veces, y en la segunda parte de ella, (x, y) =: a da como resultado x =: a y y = nil. Entiendo. – sawa
Agradable. Utilizo esto todo el tiempo sin darme cuenta de que estaba conectado con una asignación paralela. También encontré un blog que lo llama "desestructuración". – Kelvin