Du nouveau dans Ruby 2.1: Le suffixe f pour les chaînes de caractères
Aujourd’hui c’est au tour du nouveau suffixe f
(comme frozen) d’être passé
en revue.
Avant Ruby 2.1
Les chaînes de caractères en Ruby sont des objets mutables. Ce qui
signifie qu’à chaque fois que l’interpréteur rencontre "foo"
, il crée
un nouvel objet:
[~]⇒ rvm use 2.0.0
[~]⇒ irb
>> "foo".object_id
74667700
>> "foo".object_id
74664050
Ce qui peut influer sur les performances d’un programme quand on compare beaucoup de chaînes. Voici un exemple trivial:
Encore une fois, on peut constater qu’un nouvel objet est créé à chaque appel de la méthode:
Et géler (freeze) l’objet n’empêchera pas sa création à chaque appel:
Avec Ruby 2.1
[~]⇒ rvm use 2.1.0-preview1
[~]⇒ irb
Le suffixe f
permet de géler (freeze) les chaînes de
caractères:
Et surtout, le suffixe f
les gèlent une fois pour toutes.
L’exemple précédent donne ceci:
Source (pdf) toruby
Edit du 1er décembre 2013 Cette fonctionnalité a été supprimé dans la version 2.1.0-preview2.
À demain.