Ruby: Criando hashes com valores default

Palavras-chave: Ruby, hash, default, blocos

Em Ruby podemos permitir que um valor default seja retornado na tentativa de acesso à um elemento que não existe ainda em uma hash, dessa maneira:

hash = Hash.new(0)
puts hash["abobora"]
0
puts hash["batata"]
0

Mais interessante ainda é criarmos o valor de um elemento que não existe através da execução de um bloco de código. Vamos supor que queremos uma hash que contenha a data de criação de domínios, a qual terá como chave a URL do domínio e a data de criação como valor, retornado após uma consulta à uma determinada URL:

require "open-uri"

hash = Hash.new do |hash,url|
    html = open("http://reports.internic.net/cgi/whois?
whois_nic=#{url}&type=domain").read
    hash[url] = html.grep(/Creat/i).join.split(/:/,2)[1].strip.chomp
end

hash["eustaquiorangel.com"]
hash["codare.net"]
hash["ruby-lang.org"]
hash.each {|url,date| puts "#{url}: #{date}"}

O resultado será:

codare.net: 19-sep-2006
ruby-lang.org: 16-Sep-1999 09:28:50 UTC
eustaquiorangel.com: 13-jul-2006
This entry was posted in Ruby. Bookmark the permalink.