Der folgende Code funktioniert.
n = int 42
# =>42 wird ersetzt
f = int 4.2
# => TypeError!
Affen-Patch für das Kernel-Modul wie folgt
module Kernel
module_function
def int(var = 0)
if var.is_a?(Integer)
var
else
raise TypeError, "#{var} isn't Integer"
end
end
end
Danach können Sie eine Ruby-Variable wie eine Typdeklaration erstellen, indem Sie einfach "n = int 42" schreiben. Wenn Sie einen Wert eines anderen Typs (oder einer anderen Klasse) übergeben, tritt als Ausnahme "TypeError" auf.
n = int 42
i = int 21
p n
# => 42
p i
# => 21
n = int 4.2
# => `int': 4.2 isn't Integer (TypeError)
Wenn Sie den Einflussbereich einschränken möchten, sollten Sie wie folgt in "Verfeinerungen" schreiben
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
Wenn Sie danach "using Type" verwenden, wo Sie es verwenden möchten, ist es in Ordnung.
Derzeit können "Integer" und "String" wie eine Typdeklaration wie diese geschrieben werden. Lassen Sie uns darüber nachdenken, wie man Array oder Hash schreibt.
Recommended Posts