Creé un tipo compuesto
mutable struct Person
id::Int64
end
Esto salió bien, así que quiero expandir el tipo como este
mutable struct Person
id::Int64
contacts::Array{Int64}
end
pero me dicen que esto es un invalid redefinition of constant Person
.
¿Cómo elimino un tipo? ¿Hay otra forma además de reiniciar REPL? (Porfavor di que si.)
Revise
?Respuestas:
Desafortunadamente, esta es una de las pocas limitaciones de
Revise.jl
(y si hubiera una forma de hacerlo, probablemente se implementaría enRevise
). Entonces, incluso si usaRevise
actualmente, debe reiniciar julia para cambiar la definición de un tipo.Permítanme tratar de ilustrar la razón por la cual esto no es posible actualmente:
A veces uso el siguiente truco durante la etapa de desarrollo de un nuevo tipo. Sin embargo, es un truco, y no estoy seguro de que deba aconsejarlo: úselo bajo su propio riesgo.
La idea consiste en numerar sus definiciones de tipo reales, nombrando sus tipos como
Person1
,Person2
con un número de versión que se incrementa cada vez que cambia la definición. Para poder utilizar estos nombres de tipo numerados en todo el código en las definiciones de métodos, puede alias temporalmente la última definición a un nombre común sin numerar.Supongamos, por ejemplo, que tiene una primera implementación de su
Person
tipo, con solo un nombre:Ahora suponga que desea cambiar la definición del
Person
tipo para agregar unid
campo:fuente
No, esto no es posible sin reiniciar Julia.
fuente