Novo OS 2.0 traz email integrado e aplicativos Android para o PlayBook
Boatos: Microsoft pode ter Office para iPad
Guia de salários: carreira em e-commerce pode pagar até R$ 16 mil
Google ignora controles de privacidade do IE, diz Microsoft
iPad 3 terá SoC Apple A5X
Lista de falhas: iPad 2 é mais seguro que Kindle Fire
Fundador do Megaupload é solto pela justiça
Anonymous: conheça os 10 principais fatos do grupo
Anônimos, trolls e fakes: dicas de etiqueta para lidar na internet
Especial Carreiras em TI: entenda o que faz um arquiteto de solução
Solução capta e reporta falhas em softwares
Guia de salários: profissionais de help desk ganham até R$ 16,7 mil
Hash é uma estrutura de dados poderosa em Ruby. Os hashes são fundamentados em hash tables e servem para mapear objetos arbritários. Eles mantém um grupo de objetos conhecidos como chaves e associa um valor para cada chave.
Assim como arrays, hashes usam colchetes para buscar e definir valores dentro do hash. Mas ao invés de usar índices, usa-se as chaves dentro dos colchetes. Essas chaves podem conter qualquer tipo de objetos, mas strings e símbolos são normalmente utilizados. Veja um exemplo de hash:
Símbolos, strings escritas como identificadores imutáveis prefixados com dois pontos, são o tipo preferido para se utilizar nas chaves, pois além de serem imutáveis, eles são muito rápidos quando se faz comparação de igualdade entre eles. Veja o mesmo exemplo anterior, agora utilizando símbolos como chaves:
Uma maneira mais intuitiva de se criar hashes é através de uma lista separada por vírgulas de pares chave/valor. As chaves e os valores são separados pelos caracteres “=>”, que representam uma seta. Veja o exemplo:
O Ruby 1.9 suporta uma sintaxe ainda mais intuitiva e sucinta, muito parecida com objetos JSON.
Através da característica de tipagem dinâmica que o Ruby possui, é possível atribuir diferentes tipos de valores em um mesmo hash:
Claro que criar um hash com vários tipos nem sempre é uma boa alternativa. Procure manter uma coêrencia dos tipos dos valores que serão armazenados.
A maneira mais comum de iterar em elementos de um hash é através do método each. O primeiro parâmetro do bloco (key) recebe a chave e o segundo (value) o valor de cada elemento.
Iteradores somente para chaves ou somente para valores também estão disponíveis:
No Ruby on Rails, os parâmetros passados em requisições Web, independente do método HTTP utilizado, são convertidos para um hash e armazenados em uma variável chamada params que fica disponível nos controladores. Abaixo segue um exemplo de um controlador com uma ação payment que utiliza o hash params:
Uma boa prática na programação orientada a objetos é não criar métodos com uma grande lista de parâmetros. Por exemplo, na classe abaixo, o método calculate possui quatro parâmetros:
Uma solução para o exemplo acima seria agrupar alguns parâmetros em uma classe, preferencialmente de uma forma que faça sentido na sua lógica de negócio, onde os parâmetros viram seus atributos.
Mas em Ruby, para situações como essa, usamos um hash no lugar de uma classe que somente carrega dados.
Quando o último parâmetro de um método recebe um hash, podemos omitir as chaves que envolvem os pares chave/valor.
O uso de hashes como parâmetros aumenta a legibilidade do código, pois deixa explícito para quem lê o que significado dos mesmos, sem precisar olhar a definição do método para lembrar o que é cada parâmetro.
Desenvolvedor sênior na Locaweb, empresa na qual está desde 2007, Fernando Hamasaki de Amorim trabalha desde a criação até a arquitetura, modelagem, análise e integração de sistemas e aplicativos na companhia. Graduado em Tecnologia em Informática pela UniSant'Anna, o profissional possui pós-graduação em Tecnologias Web com Ênfase em Java pela Fiap. Já atuou em diversas outras companhias, tais como a TV Online, empresa brasileira pioneira em transmissões ao vivo e SAC Sistemas, que desenvolve ERP. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.
Inovação, tecnologia e futurismo
Bráulio Medina
SIRI, MAJEL, EVI - Colhemos os frutos da semântica e inteligência artificial
Mundo RIA
Zaedy Sayão
Construindo Mobile Apps com Sencha Touch e Phonegap - Parte 1
Conversando sobre Tecnologia
Anderson Rocha
Transpondo Fronteiras da Multidisciplinaridade para Lidar Com Falsificações de Imagens e Vídeos no Século XXI*
Mídias Sociais e Negócios - Direto do Vale do Silício
Marcio Saito
7 Ações em Mídia Social para quem tem mais o que fazer
Expedição WDC: o diário do sinal de internet no Brasil
Expedição WDC
Pegue uma carona na Expedição WDC/Abranet