2010-08-02 6 views
5

Mein googelfu saugt und konnte Informationen dazu nicht finden.Gibt es in Ruby eine konstante Instanzvariable?

Grundsätzlich möchte ich eine Instanzvariable haben, die nur im Rahmen einer Klasse/eines Moduls sichtbar ist, aber auch unveränderlich ist.

Ich bin neu bei Ruby und entschuldige mich, wenn diese Frage nicht viel Sinn ergibt.

Antwort

3
class MyClass 
    def initialize 
    class << self 
     FOO=1 
    end 
    end 
    def foo 
    class << self 
     FOO 
    end 
    end 
end 

Natürlich werden Sie die Methode foo wo immer möglich, zu lesen, um den Wert verwenden möchten.

wäre ein einfacheres Äquivalent

sein
class MyClass 
    def initialize 
    def foo; 1; end 
    end 
end 
+1

Natürlich sind Konstanten ohnehin nicht konstant in Ruby. –

1

Ruby-Konstanten sind nicht sehr konstant: sie sind nicht unveränderlich sind, und Sie können einen anderen Wert zuweisen und alles, was Sie bekommen eine Warnung. Siehe die Frage Constant Assigment Bug in Ruby?

Verwandte Themen