Diferença entre os métodos com "!, ?" em Ruby
- #Ruby
Olá, pessoal!
Gostaria de falar um pouco sobre as diferenças entre o uso de métodos com ponto de interrogação, exclamação ou sem pontuação em Ruby!
Os métodos com ? são métodos que retornam valor booleano, verdadeiro (true) ou falso (false). Ou seja, são realmente o que o símbolo significa, uma pergunta.
Ou seja, estou verificando se na variável nome contém essas letras ou respectiva ordem de letras.
Os métodos com ! e os métodos sem símbolos de pontuação, de nomes iguais, fazem a mesma operação, mas com uma diferença de extrema importância entre "como fazem".
Métodos com ponto de exclamação são chamados de "dangerous methods" (métodos perigosos) em Ruby, pois eles atuam no objeto o modificando, assim, modificando todas as referências feitas a este objeto em seu código. Sabendo que tudo (tudo mesmo!) em Ruby, são objetos, isso também aplicasse a variáveis primitivas. Portanto, muito cuidado ao usá-los!
Algo importante a se observar, é que esses métodos possuem dois retornos, a operação do método caso esse faça alguma alteração no objeto, ou o valor nil (nulo) caso não haja nenhuma alteração.
Os métodos sem pontuação, chamados de métodos seguros, por sua vez, agem no objeto criando uma cópia do mesmo na memória e modificando essa cópia, assim preservando o objeto original.
Bom, espero ter ajudado, fiquem à vontade para adicionar mais informações!
Grande abraço!