Em Ruby existe o método itself
, que é uma forma de referenciar o próprio objeto. Vamos explorar um pouco como ele funciona. Considere, por exemplo, um array:
irb(main):001:0> arr = 1.upto(20).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
Neste exemplo vamos verificar o id
da variável arr
.
irb(main):002:0> arr.object_id
=> 13240
Usando o itself
você pode obter o mesmo resultado. Perceba que ele retorna o mesmo id
do objeto guardado na memória
:
irb(main):003:0> arr.itself.object_id
=> 13240
Mas como esse método poderia ser utilizado na prática? Vamos ver um possível exemplo aplicado.
Digamos que você recebeu uma coleção de notas das provas de um aluno de uma escola e gostaria de identificar se vieram notas repetidas.
irb(main):005:0> notas = [9.4, 8.2, 7.1, 8.2]
=> [9.4, 8.2, 7.1, 8.2]
Porém, você sentiu a necessidade de identificar se existem notas iguais durante o período do ano letivo. Você pode usar o group_by
para obter o resultado.
irb(main):006:0> notas.group_by(&:itself)
=> {9.4=>[9.4], 8.2=>[8.2, 8.2], 7.1=>[7.1]}
Agora podemos ver que a nota 8.2 foi repetida 2x, enquanto as outras notas aparecem apenas uma vez.😊
Fique à vontade para estudar mais um pouco sobre o #itself
consultando a documentação nos links abaixo.