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