JavaFree.org | RubyOnBr.org

por que o setter eh assim?

Acompanhar por que o setter eh assim? 8 posts, 5 participantes

Img056 Jônatas Davi... 53 posts

bom dia rubianos..

o puts acima deveria imprimir “xxx => x” no entanto o retorno eh sempre do que eh passado para o setter e nao do que eh retornado pelo metodo. por que?

eu posso tentar retornar o que quiser e sempre o resultado é o mesmo.

 
Avatar nofxx 278 posts

Brou, nao te entendi.. seria isso?

 
Avatar Shairon Toledo 1272 posts

ruby retorna por default a última expressão, põe @minha_var na última linha do método mais (b) no def que funfa.

 
Img056 Jônatas Davi... 53 posts

nofxx:
no caso na linha 13
teria que retornar nao o 42 e sim o valor do teu metodo…
isso que nao funfa…
eh uma propriedade do setter do ruby, mas sinceramente eu nao sei se isso eh bom.
por exemplo: quando eu tenho um cpf e quero fazer um setter e vai tirar a mascara
o resultado seria sem a mascar entende
assim como na linha 13 do teu irb deveria retornar

 
Avatar Mereghost 834 posts

Jônatas:

Se você quer recuperar um valor tu deveria usar um getter e não o setter.
Na real o setter não deveria retornar porcaria nenhuma, mas as expressões em Ruby sempre retornam algo, nem que seja nil.
No caso de atribuições retornam o valor atribuído, que no caso é o parâmetro que tu passou. Em momento nenhum tu disse que ele deveria retornar o valor de @minha_var, apenas atribuir a concatenação do argumento com a string.

 
Avatar nofxx 278 posts

Jônatas, é oq o Merghost disse, aquele 42 ali nada mais é que um chorinho do IRB… nao tem valia alguma.

Repara na linha 14, eh um getter e volta certo.

 
Avatar Alberto_ssa 34 posts

É que a partir do Ruby 1.8 o setter sempre retorna o valor passado para ele, não importa se vc não atribui exatamente o valor passado a seu atributo.

Alberto

 
Avatar nofxx 278 posts

Humm… extendi, valeu.