{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
22/06/2010
Há algum tempo decidi deixar o preconceito de lado e resolvi me aventurar no mundo Ruby, principalmente motivado pelo IronRuby.Eu sou apaixonado por C#, e não nego isso. Acho a sintaxe atraente, ele é elegante, tem um quê de beleza. No entanto qualquer código Ruby que você veja é também muito elegante, bonito e ainda mais: é sucinto!Minha intenção aqui não é comparar o C# com o Ruby, não farei isso, mas mostrarei como fazer algumas coisas que frequentemente utilizamos em C# mas no Ruby /IronRuby.Não abordarei tudo de uma só vez, pois seria muito extenso. Vamos lá.Para executar estes códigos, veja este post: aqui
Uma das primeiras coisas que iremos notar no Ruby é que não temos que tipar as coisas.
inteiro = 10texto = "Vinicius"objeto = Object.new
Poderíamos fazer isso também:
valor = 10valor = "Vinicius"valor = Object.new
Provavelmente muitos amantes de C#, Java e Vb.Net dirão que isso é um absurdo, que perdemos a segurança, que isso é suscetível a erros, etc. Bom, sinceramente eu não acredito nisso, não mesmo. Temos vários sistemas sendo desenvolvidos em linguagens dinâmicas e com tipagem dinâmica, então vejo e acredito que isso não é risco. (Posso falar sobre isso depois, em outro post)Como pudemos verificar acima para instanciarmos um novo objeto utilizamos uma chamada ao método new.Reparem que a chamada ao método pode ser feita sem parênteses. Isso torna o código mais claro, no meu ponto de vista. Menos ruído. Gosto disso.
Com o código abaixo definimos uma classe no Ruby:
class MinhaClasseendobjeto = MinhaClasse.new
Simples.
Agora vamos criar um método:
class MinhaClasse def meu_metodo puts "Este é o retorno do método" endendobjeto = MinhaClasse.newobjeto.meu_metodo
Para criarmos um método utilizados a keyword def. A convenção de nomes de métodos em Ruby é a que foi utilizada, com underscore.O comando puts é um comando básico para printar um valor. É uma abreviação de "put string".Reparem que não definimos tipo de retorno no nosso método, não definimos parâmetros e não utilizamos ponto-e-vírgula. Na linha 8 fazemos uma chamada para o nosso método.Se quisermos receber parâmetros:
class MinhaClasse def meu_metodo(nome) puts "Este é seu nome: '#{
ome}
'?" endendobjeto = MinhaClasse.newvar.meu_metodo "Vinicius"var.meu_metodo("Vinicius")
Na linha 2 deifnimos o método para receber um parâmetro. Notem novamente que não há tipagem, eu apenas informo que será um parâmetro e nada mais.Na linha 3 eu utilizo esse parâmetro montando uma string para ser exibida.Nas linhas 8 e 9 realizamos chamadas para o método passando um parâmetro. Podemos chamar o método com ou sem os parênteses, o resultado é o mesmo.Se não passarmos o parâmetro, no entanto, teremos erro.Se quisermos definir um retorno para o nosso método podemos fazer isso das formas abaixo:
class MinhaClasse def metodo_com_return return 1+1 end def metodo_sem_return 1+1 endendobj = MinhaClasse.newputs obj.metodo_com_returnputs obj.metodo_sem_return
Definimos 2 métodos, ambos fazem a mesma coisa. Podemos omitir a palavra return como fizemos na linha 7, isto por que todos os métodos retornam algo em Ruby, e a última linha é sempre o retorno do método.
Geralmente no C# utilizamos o método ToString. No Ruby isso funciona assim:
objeto = MinhaClasse.newobjeto.to_sobjeto.ToString
Na linha 2 fazemos uma chamada para o método to_s do Ruby. E na linha 3 fazemos uma chamada para o método ToString do .Net.
E para finalizar os comentários em Ruby podem ser feitos destas duas maneiras:
# comentário de linha=beginIsto é um comentário de blocoposso ter várias linhas aquietc=endputs "Um valor" #isto é um comentário após o comando
Nem há necessidade de explicar mais não é?Para executar estes códigos, façam a instalação do IronRuby: http://ironruby.codeplex.com/Abram a pasta da instalação/bin e executem o ir.exe.Veja mais informações aqui.Qualquer dúvida, estou às ordens.
Att, Vinicius Quaiato.