Başka bir soruya cevap verirken, aşağıdaki programın yaptığım şeyi tam olarak yapmadığını fark ettim. Ben her zaman üst düzey yöntemi çağrıları main
nesne örneği tarafından çözülmesi yönündeki düşündüğümüz gibiRuby global kapsamı
puts "test"
self.puts "test" # => private method `puts' called for main:Object (NoMethodError)
istisna, beni şaşırtıyor, ancak bu durum görünmüyor.
İlk aramanın gerçek alıcısı nedir ve nasıl çözümlenir? Bu, yalnızca üst düzey kapsamdaki yöntem çağrıları için geçerli olan özel bir kural mı?
Evet PutsTestdışından çağrılmasına PutsTestiç yöntemini çağırarak gelen kapsamını değişiyor ama neden ben çağırabilir Ben kendimi belirtmezseniz özel yöntem? –
Kendi başına koyar çünkü nesnenin içinde kapsamlanır, doğrudan self.put çağrısı, kendiliğinden gizli olan put yöntemini çağırmaya çalıştığınız anlamına gelir. Cevabımı bazı kodlarla güncellerim. . – mguymon
Umarız bu kod örneği, vs vs self.puts – mguymon