Ruby “gotchas”
Para quem está migrando dos mundos Java ou .NET, Ruby reserva algumas surpresas. Como estamos acostumados a linguagens estáticas e outros detalhes como declaração de variáveis e tipos primitivos, acabamos caindo nessas “pegadinhas” algumas vezes.
Veja alguns exemplos:
.
false e nil são os únicos valores falsos válidos, todo o restante é verdadeiro:
irb(main):001:0> p "verdadeiro?" if 1 == true => nil irb(main):002:0> p "verdadeiro?" if 0 == false => nil irb(main):003:0> p "verdadeiro?" if nil => nil irb(main):004:0> p "verdadeiro?" if 6 "verdadeiro?" => nil irb(main):005:0> p "verdadeiro?" if -6 "verdadeiro?" => nil irb(main):005:0> p "verdadeiro?" if 0 "verdadeiro?" => nil
Declaração dinâmica de variáveis e escopo:
class Foo
attr_accessor :bar
def initialize(value)
bar = value
end
end
puts Foo.new(42).bar
=> nil
No caso acima, o Ruby cria a variável “bar” com escopo local ao método initialize e não utiliza o método acessor definido para a variável de instância @bar, o que é o correto de acordo com o comportamento da linguagem e estranho para quem vem das linguagens estáticas.
O correto seria:
class Foo
attr_accessor :bar
def initialize(value)
self.bar = value #ou @bar = value
end
end
puts Foo.new(42).bar
=> 42
Se você conhece mais algum, deixe um comentário.
Nenhum comentário até agora