Ruby 2.0 ya da öyleyse, private_constant
kullanarak sabit bir özel yapmak mümkün oldu, sabit doğrudan bildirim modülünün dışında kullanılırsa bir hatayla sonuçlanır. Ancak, constants
ve const_defined?
ve const_defined?
yine de özel sabitleri döndürür ve const_get
bunlara erişime izin verir. Özel sabitleri programatik olarak tanımlamanın ve çalışma zamanında filtrelemenin bir yolu var mı?Yalnızca halka üzerinde yineleyin Açık Ruby sabitleri
Güncelleme:
() What does Module.private_constant do? Is there a way to list only private constants? ve cevabının özel olarak bu davayı ele almazlarsa, daha ziyade ters (nasıl sadece özel sabitleri listelemek için unutmayın.): O sanki görünüyor Ruby 1.9 ve 2.0'da, constants
sadece kamu sabitlerini içermiştir. 2.1'den itibaren, constants
no'lu argüman hala sadece halka sabitleri içerir, ancak constants(false)
ile inherit
false
'a ayarlanması (yani, sadece bu modülde tanımlanan sadece bu modülde tanımlanan sabitleri listeler) özel sabitleri açığa çıkarmanın yan etkisine sahiptir.
Olası yinelenen http://stackoverflow.com/questions/12944616/what-does-module-private-constant-do-is-there-a - sadece-liste-özel-özel- –
Onlar hala tanımlanmıştır. Ruby'nin yalan söylemesini ister misin? – tadman
Sorunu Ruby 2.1.4: '2.1.4: 001> Foo modülünde çoğaltmıyorum; X = 1; Y = 2; private_constant: Y; son; Foo.constants'ı döndürür [: X] ' –