¿Cómo llamo a un método que es un valor hash?

Anteriormente, pregunté acerca de una forma inteligente de ejecutar un método en una condición determinada "Ruby es una forma inteligente de ejecutar una función en una condición. "

Las soluciones y el tiempo de respuesta fueron excelentes, sin embargo, luego de la implementación, tener un hash de lambdas se pone feo con bastante rapidez. Así que empecé a experimentar.

El siguiente código funciona:

def a()
  puts "hello world"
end

some_hash = { 0 => a() }

some_hash[0]

Pero si envuelvo esto en una clase, deja de funcionar:

class A

  @a = { 0 => a()}

  def a()
    puts "hello world"
  end


  def b()
    @a[0]
  end

end

d = A.new()

d.b()

No puedo ver por qué debería dejar de funcionar, ¿alguien puede sugerir cómo hacerlo funcionar?

Respuestas a la pregunta(7)

Su respuesta a la pregunta