/ / ¿Es una mala práctica usar asignación múltiple cuando solo se usará una variable? - rubí

¿Es una mala práctica usar la asignación múltiple cuando solo se usará una variable? - rubí

En el siguiente ejemplo de asignación múltiple, la variable will_not_be_used no será referenciado en ningún otro lugar. Sin embargo, personalmente considero que este enfoque es simple y fácil de entender.

¿Se considera esto una mala práctica?

useful,will_not_be_used = my_hash.detect { |key,value| value == "foo" }

Respuestas

8 para la respuesta № 1

Es idiomático usar un guión bajo (_) para valores descartables como ese:

useful, _ = my_hash.detect { |key,value| value == "foo" }

Actualizar: Como señaló Jörg W Mittag en los comentarios a continuación, Ruby mismo entiende _ para ser una variable desechable: cuando se ejecuta con advertencias habilitadas, Ruby (al menos MRI, posiblemente otras) advertirá sobre las variables locales no utilizadas a menos que comiencen con un guión bajo.


1 para la respuesta № 2

Valores desechables

No hay nada inherentemente malo en usarasignación múltiple para descartar valores desechables, pero puede no ser tan revelador de intenciones como otras construcciones. Según sus datos o su uso previsto, uno de los siguientes puede ser más detallado pero semánticamente más claro:

my_hash = {bar: "foo", baz: "quux"}
# => {:bar=>"foo", :baz=>"quux"}

my_hash.rassoc("foo").first
# => :bar

my_hash.select { |k,v| v == "foo" }.keys.first
# => :bar

my_hash.map { |key, value| key if value == "foo" }.first
# => :bar

El uso de Enumerable # detect puede estar impulsando el uso de la asignación descartada, pero ciertamente hay otros casos de uso que vale la pena considerar. Sin embargo, para su ejemplo específico, probablemente no hay diferencia.