exc nil endendxyz = …">

Peczenyj's Blog

Just Another /Perl|Ruby|C++|Java|Python|JavaScript|Flash|Bash/ Hacker

Melhorando O “try()” Do Ruby, a Maneira “Groovy” [Parte Final]

class Omega
def a
self
end
def b
self
end
def c
self
end
def to_s
"Omega"
end
end

def da?
begin
yield() if block_given?
rescue => exc
nil
end
end

xyz = nil
a = da? { xyz.a.b.c }

xyz = Omega.new
b = da? { xyz.a.b.c }

puts "da? com nil -> '#{a}'"
puts "da? com Omega -> '#{b}'"


Executando:
da? com nil -> ''
da? com Omega -> 'Omega'


O que eu fiz? como a expressão xyz.a.b.c poderia retornar algum erro pois um dos métodos poderia returnar nil, bastaria executar em um bloco de código com a ajuda do método da? (péssimo nome, uma corruptela de “da para executar sem erro? se não, me retorna nil e era wilson…), que captura qualquer erro e some com ele.

Ruby é divertido. :)

ps: teste com

a = da? { xyz.a.b.c } || "nao deu..."