Jak wywołać metodę, która jest wartością skrótu?

Wcześniej pytałem o sprytny sposób na wykonanie metody w danych warunkach ”Ruby sprytny sposób na wykonanie funkcji pod warunkiem. ”

Rozwiązania i czas reakcji były świetne, jednak po wdrożeniu posiadanie hasha lambd szybko staje się brzydkie. Więc zacząłem eksperymentować.

Działa następujący kod:

def a()
  puts "hello world"
end

some_hash = { 0 => a() }

some_hash[0]

Ale jeśli zawijam to w klasie, przestaje działać:

class A

  @a = { 0 => a()}

  def a()
    puts "hello world"
  end


  def b()
    @a[0]
  end

end

d = A.new()

d.b()

Nie rozumiem, dlaczego powinien przestać działać, czy ktoś może zasugerować, jak to działa?

questionAnswers(7)

yourAnswerToTheQuestion