# frozen_string_literal: true
magique pour un commentaire, pris en charge pour la première fois en Ruby 2.3, qui dit à Ruby que tous les littéraux de chaîne dans le fichier sont implicitement figé, comme si #freeze
avait été appelé sur chacun d'eux. C'est, si un littéral de chaîne est définie dans un fichier avec ce commentaire, et vous appeler une méthode sur cette chaîne qui les modifie, comme <<
, vous obtiendrez RuntimeError: can't modify frozen String
.
Le commentaire doit être sur la première ligne du fichier.
En Ruby, 2.3, vous pouvez utiliser cette magie commentaire à préparer pour les surgelés littéraux de chaîne étant la valeur par défaut dans Ruby 3.
En Ruby 2.3 exécuter avec l' --enable=frozen-string-literal
drapeau, et en Ruby 3, les littéraux de chaîne sont gelés dans tous les fichiers. Vous pouvez remplacer le paramètre par défaut avec # frozen_string_literal: false
.
Si vous souhaitez un littéral de chaîne pour être mutable quel que soit le global ou par fichier de configuration, vous pouvez ajouter un préfixe avec le unaire +
de l'opérateur (en étant prudent avec la priorité de l'opérateur) ou appelez - .dup
sur:
# frozen_string_literal: true
"".frozen?
=> true
(+"").frozen?
=> false
"".dup.frozen?
=> false
Vous pouvez également congeler une mutable (réactualisé) chaîne avec unaire -
.