Ruby tableau.sélectionnez multiligne bloc

Je suis de filtrage d'un tableau à ruby et à l'aide d'un .select bloc pour le faire. Les conditions sont suffisamment complexes pour qu'un seul bloc de lignes est hideuse, mais pas que les grandes donc une méthode distincte semble exagéré. Donc je veux utiliser une multiligne bloc. Cependant, je ne suis pas sûr de la syntaxe.

filtered_array = base_array.select do |elem|
    return false if condition1
    return false if condition2
    return true
end

Ci-dessus est clairement erronée, comme return sort de la méthode, de ne pas le bloquer mais donne une idée de ce que je suis à la recherche d'.

J'ai pu également utiliser plusieurs instructions select, mais qui semble dissimuler ce que je suis en train de faire. Notez que les conditions ci-dessus sont suffisamment complexes pour que l'utilisation d'opérateurs logiques pour lier entre eux les résultats dans un désordre.

Vous pouvez également utiliser des variables temporaires.
voir mon edit s'il vous plaît.
Les blocs de piles ne fonctionnent pas avec l'instruction return (retour serait de retour à partir de la méthode contenant le bloc), sauf s'ils sont lambdas, qui bloque, par défaut, ne le sont pas. La solution à votre cas d'utilisation particulier est celui que Kyle fourni, le général on serait un cas ou de cas comme zététitien fourni, et en général, il suffit de ne pas utiliser l'instruction return pour revenir à partir de blocs, sauf si vous savez qu'ils vont être lambdas, ou transformé en méthodes.
Si vous lisez la question, vous remarquerez que j'ai dit que return "est clairement incorrect" et je veux savoir ce qu'il faut utiliser à la place. Kyle la réponse est très compliqué dans le cas que j'utilise. Zététitien de réponse est le plus proche de mon cas d'utilisation, mais ne fonctionne pas dans le cas du composé de l'ifs.

OriginalL'auteur AntonDelprado | 2012-06-14