O que esperar do próximo iPhone
A TI deve confiar nos dispositivos móveis?
Plantronics cria comunidade de desenvolvedores
Guia de salários: gerentes de bancos de dados recebem até R$ 8,7 mil
Microsoft: Windows 8 chegará no final deste ano
Ah, Facebook, por que não consigo lhe largar?
4G Americas: saiba o que as operadoras devem fazer para atender demanda por dados
ATUALIZADA - Brasil: veja a lista de dispositivos que serão atualizados para Android 4.0
EMC lança mais de 40 produtos entre hardwares e softwares
Forrester: preparem-se para a segunda onde de aplicativos móveis
ATUALIZADA - Fique por dentro da compra da Motorola Mobility pelo Google
Windows Phone 7: usuários não poderão baixar apps do Marketplace
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, Fernando Hamasaki de Amorim atua em projetos utilizando Ruby e Rails. Pós-graduado em Tecnologias Web Fiap, trabalha desde 2000 com desenvolvimento web, onde já desenvolveu em várias plataformas e linguagens, como .NET, Java, JavaScript, PHP e ASP. Também foi palestrante do FISL e da RubyConf Brasil. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.
Conscientização e Dicas de Segurança da Informação
Anderson Santana
Artigo: Proteção de Dados
Dirty & Ugly Web
Paulino Michelazzo
Caiu na rede
Internet Upgrade
Victor Maeda
Ataques DDos aos bancos brasileiros.
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