Filtruję tablicę w ruby i używam bloku .select
, aby to zrobić. Warunki są wystarczająco skomplikowane, że pojedynczy blok linii jest ohydny, ale nie tak duży, więc oddzielna metoda wydaje się przesadą. Dlatego chcę użyć bloku wielowierszowego. Jednak nie jestem pewien składni.Ruby array.select blok multilinii
filtered_array = base_array.select do |elem|
return false if condition1
return false if condition2
return true
end
Powyższe jest oczywiście błędna jak return
wychodzi metodę, a nie blok, ale daje wyobrażenie o tym, co szukam.
Mogę również użyć wielu instrukcji wyboru, ale wydaje się to zaciemniać to, co próbuję zrobić. Należy zauważyć, że powyższe warunki są wystarczająco skomplikowane, że użycie operatorów logicznych do ich wiązania powoduje bałagan.
Można także użyć zmiennych tymczasowych. –
@Anton zobacz moją edycję proszę. – Kyle
Bloki w tablicach nie działają z instrukcjami powrotu (zwroty powracałyby z metody zawierającej blok), chyba że są to lambdy, które domyślnie blokują. Rozwiązaniem twojego konkretnego przypadku użycia jest ten, który dostarczył Kyle, ogólny byłby instrukcją if lub case, tak jak zetetic, i ogólnie, po prostu nie używaj zwrotów, aby powrócić z bloków, chyba że wiesz, że idą być lambdami, czyli przekształconymi w metody. –