Wie viele Dinge in Ruby gibt es kein "Finale", die Dinge sind von Natur aus dynamisch und absolut verhindern, dass Menschen Dinge tun, wird nie wirklich passieren. Du kannst es nur schwer machen.
Das einzige, was zu beachten ist, in Ruby gibt es einen Unterschied zwischen unveränderlich und konstant. Eine Konstante ist eine Variable, die bei der Neuzuweisung eine Warnung generiert, das ist alles, und nichts hindert Sie daran, sie zu ändern. Um Änderungen zu verhindern, müssen Sie das betreffende Objekt "einfrieren", obwohl es sich bei allen Dingen in Ruby um eine Anfrage handelt, die vom Objekt ignoriert werden kann.
Normalerweise werden Sie Code wie folgt sehen:
ADMIN_USER_TYPE = 'Admin'.freeze
Oder diese:
USER_TYPES = %w[
Admin
].freeze
Der freeze
Anruf Fälle zu fangen, wo die Liste könnte durch irgendein Verfahren zufällig verstümmelt werden. Es verhindert dies nicht unbedingt, es ist eher eine Sicherheitsmaßnahme. Betrachten Sie diesen Code:
def user_labels(types)
types.map! { |t| [ t, t.downcase.to_sym ] }
end
Hier ein falscher map!
Aufruf die Wirkung von Umschreiben des ursprünglichen Arrays haben würde. In Fällen, in denen man es mit einem Wegwerf-Argumente ist ruft das ist in Ordnung:
user_labels(%w[ Admin Test ])
Wenn Sie die Konstante verwenden Sie es dauerhaft verändern werden, und das wird dazu führen, dass und über bekommen verändert über Jedes Mal, wenn es angerufen wird, entsteht ein Durcheinander. Der Merker freeze
löst hier eine Warnung aus und verhindert dies.
Also die kurze Antwort ist: Nein. Die lange Antwort ist, dass Sie diszipliniert sein müssen, die Sprache wird Sie nicht davon abhalten, dies zu tun, wenn Sie ausreichend entschlossen sind. Warnungen beachten und ernst nehmen.
Ich glaube nicht, dass es in Ruby Äquivalente zu Java-Konstanten gibt. – Li357
Reflection in Ruby ist mühelos und durchdringend, und es wäre nicht mehr Ruby ohne es; und es ist trivial, alle Zugriffssteuerungen zu ignorieren, die es verwenden. Es gibt auch keine Möglichkeit, Menschen daran zu hindern, Klassenstränge zu machen; def + (o); "NEIN!" Ende-Ende. Der Ruby-Weg ist: mach dich nicht dumm und dir geht es gut. – Amadan