Le code suivant fonctionnera.
n = int 42
# =>42 est remplacé
f = int 4.2
# => TypeError!
Patch Monkey pour le module Kernel
comme suit
module Kernel
module_function
def int(var = 0)
if var.is_a?(Integer)
var
else
raise TypeError, "#{var} isn't Integer"
end
end
end
Après cela, vous pouvez créer une variable Ruby comme une déclaration de type simplement en écrivant n = int 42
. De plus, si vous passez une valeur d'un type (ou d'une classe) différent, TypeError
apparaîtra comme une exception.
n = int 42
i = int 21
p n
# => 42
p i
# => 21
n = int 4.2
# => `int': 4.2 isn't Integer (TypeError)
Si vous voulez restreindre la plage d'influence, vous devez écrire comme suit dans raffinements
module Type
refine Kernel do
module_function
def int(var = 0)
if var.is_a?(Integer)
var
else
raise TypeError, "#{var} isn't Integer"
end
end
end
end
Après cela, si vous utilisez ʻusing Type` là où vous voulez l'utiliser, c'est OK.
Pour le moment, ʻInteger et
String` peuvent être écrits comme une déclaration de type comme celle-ci. Réfléchissons à la façon d'écrire Array ou Hash.
Recommended Posts