W poniższym przykładzie wielokrotnego przypisania zmienna will_not_be_used
nigdzie indziej nie będzie przywoływany. Jednak osobiście uważam to podejście za proste i łatwe do zrozumienia.
Czy jest to uważane za złą praktykę?
useful,will_not_be_used = my_hash.detect { |key,value| value == "foo" }
Odpowiedzi:
8 dla odpowiedzi № 1Idiomatyczne jest używanie znaku podkreślenia (_
) dla takich wartości odrzucanych:
useful, _ = my_hash.detect { |key,value| value == "foo" }
Aktualizacja: Jak zauważył Jörg W Mittag w komentarzach poniżej, sama Ruby rozumie _
być zmienną jednorazową: po uruchomieniu z włączonymi ostrzeżeniami Ruby (przynajmniej MRI, ewentualnie inne) ostrzega przed nieużywanymi zmiennymi lokalnymi, chyba że zaczynają się od znaku podkreślenia.
1 dla odpowiedzi nr 2
Wartości odrzucenia
Nie ma nic złego w użyciuwielokrotne przypisanie w celu odrzucenia wartości odrzucenia, ale może nie być tak odkrywcze jak inne konstrukcje. W zależności od danych lub ich zamierzonego wykorzystania, jeden z poniższych może być bardziej szczegółowy, ale semantycznie jaśniejszy:
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
Sposób użycia Wyliczalna # wykryć może kierować wykorzystaniem odrzuconego zadania, ale z pewnością warto rozważyć inne przypadki użycia. Jednak w twoim konkretnym przykładzie prawdopodobnie nie ma znaczenia.