Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

:IronRuby Basics para .Net Lovers => I


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

:Tipagem

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.

:Classes

Com o código abaixo definimos uma classe no Ruby:

class MinhaClasseendobjeto = MinhaClasse.new

Simples.

:Métodos

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.

:ToString

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.

:Comentários

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.

Voltar

Fork me on GitHub