Utiliser la méthode Freeze dans Ruby

Cet article présentera comment nous pouvons utiliser la méthode freeze
pour les objets dans Ruby.
Utiliser la méthode freeze
en Ruby
Nous pouvons utiliser la méthode freeze
dans Ruby lorsque nous ne voulons plus modifier un objet et que nous voulons nous assurer qu’il ne peut pas être modifié. Nous pouvons rapidement générer des objets immuables en utilisant cette méthode.
Le programme affichera une erreur si nous essayons de modifier un objet sur lequel la méthode freeze
est appliquée. Un cas d’utilisation de la méthode freeze
avec un tableau est présenté ci-dessous.
# Ruby fruits = ["orange","banana","strawberry"] fruits.freeze fruits <<"watermelon"
Nous aurons une erreur lorsque nous essaierons d’exécuter ce code. Dans le cas d’une chaîne, l’utilisation de la méthode freeze
est illustrée ci-dessous.
# Ruby str = "Hey" str.freeze str <<" How are you?"
Cela affichera également les erreurs d’exécution. Dans le cas d’un objet, l’utilisation de la méthode freeze
est illustrée ci-dessous.
# Ruby class Fruits def initialize(name) @name = name end def get_name return @name end def set_name(name) @name = name end end a = Fruits.new("apple") a.freeze a.set_name("melon") puts a.get_name
Production:
Dans les exemples ci-dessus, une erreur s’est produite car nous avions tenté de modifier des objets alors qu’ils étaient déjà figés par la méthode freeze
.
Limitations de la méthode freeze
en Ruby
Il y a quelques limites à la méthode freeze
. Il est essentiel de comprendre que nous pouvons modifier les variables liées aux objets figés.
C’est parce que nous avons seulement gelé les objets en utilisant cette méthode. Les variables liées à ces objets peuvent être modifiées librement.
Voici un exemple illustrant comment nous pouvons changer un objet gelé en une nouvelle chose en accédant à la même variable.
# Ruby str = "Hey James" str.freeze str = "Hey Petr" puts str
Production:
On peut utiliser la méthode freeze
pour vérifier si un objet est immuable.
# Ruby str2 = "Hey Julia" str2.freeze str4 = "Julia is very nice" num = 120.5 num.freeze