Jaki jest rozsądny sposób na powiedzenie tego.Eleganckie przykuty do testowania na tej samej zmiennej w Ruby
if @thing == "01" or "02" or "03" or "04" or "05"
(Liczby są zawarte w kolumnie typ danych string.)
Jaki jest rozsądny sposób na powiedzenie tego.Eleganckie przykuty do testowania na tej samej zmiennej w Ruby
if @thing == "01" or "02" or "03" or "04" or "05"
(Liczby są zawarte w kolumnie typ danych string.)
Złóż tablicę i używać .include?
if ["01","02","03","04","05"].include?(@thing)
Jeśli wartości naprawdę są kolejne, można użyć szeregu jak (1..5).include?
W przypadku ciągów można użyć:
if ("01".."05").include?(@thing)
Lub w tym szczególnym przypadku, '(" 01 ".." 05 "). Include? (@ Rzecz)' –
Jeśli tylko tablice Ruby przeszły wyszukiwanie binarne, może to zająć czas 'O (log n)' zamiast 'O (n) 'czas. –
@ MДΓΓБДLL: Ruby ma zestawy, więc 'Set.new (" 01 ".." 05 "). Include? To" O (1) ". –
Lub użyć st przypadku atement:
case @thing
when "01", "02", "03", "04", "05"
# do your things
end
Dwa warianty tego podejścia:
case @thing
when "01".."05"
# do your things
end
case @thing
when *%w[01 02 03 04 05]
# do your things
end
Ponieważ case
wykorzystuje ===
, można również napisać: ("01".."05") === @thing
Miło, nie wiedziałem, że można użyć operatora splat w gałęziach 'when'. –
Operator '===' wprowadza w błąd, IMHO, ponieważ oznacza coś zupełnie innego w innych językach, w których jest dostępny. "include?" jest znacznie bardziej czytelne. –
Zgadzam się z tobą, nigdy go nie używałem w ten sposób;) –
Poprawna, ale wersja gadatliwy byłyby 'jeśli @thing == "01" || @thing == "02" || ... ' –
Zwróć uwagę, że [' i '/' lub 'is * not * to samo, co' && '/' || 'w Ruby] (http://devblog.avdi.org/2010/08/02/using-and-and-or-in-ruby /). –