Dans Ruby 1.9, vous pouvez avoir Fixnum
, Float
et Symbol
valeurs qui sont dégelés ou congelés:Quelle est l'utilisation ou l'effet de la congélation de symboles et de nombres dans 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]
Je comprends l'utilité des chaînes de congélation, des tableaux ou d'autres types de données mutables. Pour autant que je sache, cependant, Fixnum
, Symbol
, et Float
instances sont immuables depuis le début. Y at-il raison de les congeler (ou toute autre raison que Ruby ne leur rapport comme déjà frozen?
Notez que dans Ruby 2.0 Fixnum
s et Float
s les deux commencent comme gelé, alors que Symbol
s conservent le comportement décrit ci-dessus Alors, ça devient lentement "meilleur" :)