In Ruby 1.9 können Sie Fixnum
, haben Float
und Symbol
Werte, die nicht gefrorenen oder gefroren sind:Was ist die Verwendung oder der Effekt des Einfrierens von Symbolen und Zahlen in Ruby?
irb(main):001:0> a = [ 17, 42.0, :foo ]; a.map(&:frozen?)
=> [false, false, false]
irb(main):002:0> a.each(&:freeze); a.map(&:frozen?)
=> [true, true, true]
ich die Nützlichkeit von Einfrieren Strings verstehen, Arrays oder andere veränderbare Datentypen. Soweit ich weiß, Fixnum
, Symbol
und Float
Instanzen sind jedoch von Anfang an unveränderlich. Gibt es einen Grund, sie (oder aus irgendeinem Grunde zu gefrieren, dass Ruby nicht als bereits frozen?
Hinweis berichten würde, dass in Ruby 2.0 Fixnum
s und Float
s sowohl als gefroren beginnen, während Symbol
s behält das oben beschriebene Verhalten So, es wird langsam "besser" :)