O método try()

2 de março de 2008  |  Ruby  | 

494863115_d6ee04b511.jpg

Vi esta dica no blog do Chris Wanstrath, um dos funcionários da Ett Free. Pense em quantas vezes você já fez algo assim:

def name
  @person ? @person.name : nil
end

Agora imagine como seria fácil se pudéssemos fazer a mesma coisa assim:

def name
  @person.try(:name)
end

Pois é… inclua este código abaixo em seu projeto e seja feliz.

class Object
  ##
  #   @person ? @person.name : nil
  # vs
  #   @person.try(:name)
  def try(method)
    send method if respond_to? method
  end
end

É engraçado como normalmente as melhores soluções são as mais simples…


2 Comentários


  1. Pois é, Carlos!
    Essa é uma das coisas que eu sempre usei, mas nunca fiquei feliz olhando para um código assim! Acho que a maior vantagem de Ruby e Rails serem tão simples é que toda a comunidade que trabalha com eles pensa da mesma forma e tenta simplificar ao máximo todas as tarefas!
    Abraço e muito sucesso! :D
    Felipe Giotto.

Trackbacks

  1. O método try() e um objeto nulo
  2. A better “try()” for Ruby, why not do the Groovy way? | Urubatan’s Weblog
  3. Nome do Jogo » Blog Archive » Edge Rails: Object#try

Deixe um comentário