Buscar um ou mais objetos em um array de objetos em Ruby
Criado em: 16/02/2013
Como fariamos para conseguir pegar um objeto de um array
de objetos baseado em uma propriedade do objeto?
Vamos ao seguinte cenário, dado que tenhamos o seguinte array
de OpenStruct
s, utilizamos OpenStruct
pela facilidade mas poderia ser qualquer objeto ou mesmo um Hash
.
Se quisessemos apenas o objeto com o id 53, poderiamos usar o Enumerable#select que nos retornaria:
como pode ver o select
nos retorna uma coleção, sendo assim ele retorna todos os objetos que satisfazerem a condição passada ao bloco, veja o exemplo a seguir:
Como temos 2 objetos com o gender igual a action ele retornou os 2. Caso queiramos apenas o primeiro objeto que satisfazer a condição, o que faz sentido no caso de uma busca por id por exemplo, podemos utilizar o Enumerable#detect veja:
Então fica a dica precisando buscar em uma coleção, uma coleção de objetos que satisfaçam uma certa condição utilizar o select
, precisando retornar um único valor que satisfaça a condição utilizar o detect
.
Comentários
Comentários powered by Disqus