Warning: Missing argument 1 for GeSHi::GeSHi(), called in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/codecolorer/codecolorer-core.php on line 137 and defined in
/home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line
432
Warning: Missing argument 2 for GeSHi::GeSHi(), called in /home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/codecolorer/codecolorer-core.php on line 137 and defined in
/home/storage/f/73/ab/bitside1/public_html/edipo_blog/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line
432
Chamando um método de um objeto
Falando nos paradigmas de Orientação a Objetos os objetos dos quais fizemos chamadas de métodos são denominados
receptores, onde métodos são como mensagens que enviamos para os objetos.
No Ruby temos a palavra chave self que dentro do corpo de um método faz referencia ao objeto de onde ele foi chamado.
Execute a seguinte classe(no exemplo no IRB):
1 2 3 4 5 6 7
| class Teste
def foo
puts self.class
end
end
t = Teste.new |
O exemplo acima irá imprimir Teste que é o nome da nossa clase. Nos outros posts ainda não foi apresentado como seria a criação de métodos para classes de objetos( Veremos isso em outros posts) , mas provavelmente você já fez alguma chamada de método em objetos, assim:
Sim em Ruby tudo realmente tudo é um Objeto, veja:
1 2 3 4
| "minha".is_a? Object => true
1.is_a?Object =>true
:a.is_a? Object => true |
No Ruby assim como em grande parte das linguagem OO usamos o ponto(.) para separar o objeto do método.
Métodos e Parênteses
No Ruby podemos não usar os parênteses na maioria dos casos em métodos de invocação. Mas tome cuidado com isso, em alguns casos mais complexos isso pode causam ambiguidades sintáticas. Vamos far uma olhada nisso:
Provavlemente você ja fez isso:
ao invés de:
Agora considere o seguinte código:
1 2 3
| s = "Minha String"
"Minha String"
sz = s.length |
Bom vimos algo assim antes, você pode estar pensando que length e um prioridade ou campo ou até um variável de objeto.
Os objetos são totalmente encapsulados, então a única forma que temos de usar eles é através da invocação dos seus métodos, que foi o que fizemos nos exemplos acima. Neste caso também omitimos os parênteses, pois esse método não espera nenhum argumento, mas poderiamos perfeitamente
usar assim: sz = s.length().
Você também pode omitir os patênteses tambem em uma lista de parâmetros em métodos, por exemplo:
1 2 3
| def meu_metodo x,y,z
x + y + z
end |
O que de fato não sei se é melhor que com os parênteses, acho melhor não usar quando temos um argumento apenas.
Bom pessoal é isso por hoje, logo daremos continuação aos posts sobre Ruby.
Abraço a todos