43 votes

Quel est le moyen le plus rapide dans Ruby pour obtenir le premier élément énumérable pour lequel un bloc renvoie true ?

Quel est le moyen le plus rapide dans Ruby pour obtenir le premier élément énumérable pour lequel un bloc renvoie true ?

Par exemple:

 arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first  # => 107

J'aimerais le faire sans parcourir tout le tableau, comme le select , car je n'ai besoin que de la première correspondance.

Je sais que je pourrais faire un each et faire une pause en cas de succès, mais je pensais qu'il existait une méthode native pour le faire ; Je ne l'ai tout simplement pas trouvé dans la documentation.

4voto

Michael Kohl Points 33345
arr[arr.index {|num| num > 100 }] #=> 107

2voto

steenslag Points 29662
arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.)

0voto

calasyr Points 116

Je me souviens de cette utilisation en pensant à ActiveRecord.find, qui vous donne le premier enregistrement et à ActiveRecord.select, que vous utilisez lorsque vous les obtenez tous.

Ce n'est pas une comparaison parfaite, mais cela pourrait suffire pour aider à se souvenir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X