/ / Czy niewłaściwą praktyką jest używanie wielu przypisań, gdy używana będzie tylko jedna zmienna? - rubinowy

Czy niewłaściwą praktyką jest używanie wielu przydziałów, gdy używana jest tylko jedna zmienna? - rubin

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 № 1

Idiomatyczne 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.