Ab Ruby 2.1, während Module#constants
nur öffentliche Konstanten enthält, wenn Sie inherit=false
setzen, erhalten Sie auch private Konstanten. Wenn Sie also eine Konstante in constants(false)
, aber nicht in constants
finden (und Sie interessieren sich nicht für geerbte Konstanten), könnte dies eine mehr oder weniger zuverlässige Methode sein, um zu erkennen, ob sie privat ist.
Das ist undokumentiert, und ich bin mir nicht sicher, ob es beabsichtigt ist, aber empirisch funktioniert es. Ich würde es mit Unit Tests untermauern.
Update: Es sieht so aus, als wäre ein Bug in Ruby und könnte es sein verschwinden in einer zukünftigen Version.
Es gibt keine privaten Konstanten bis Ruby 1.9.3. Um eine Liste aller Konstanten zu erhalten, können Sie einfach #constants
verwenden.
Ab 1.9.3 wurde .private_constant
hinzugefügt, aber da nichts wirklich privat ist, können Sie ...
Ich glaube nicht, dass es eine Möglichkeit gibt, eine Liste aller privaten Konstanten zu erhalten, aber Sie können trotzdem das Vorhandensein eines bestimmten Namens testen.
%Vor%Tags und Links ruby constants private ruby-1.9.3