Eu criei um tipo composto
mutable struct Person
id::Int64
end
Tudo correu bem, então eu quero expandir o tipo assim
mutable struct Person
id::Int64
contacts::Array{Int64}
end
mas me disseram que isso é um invalid redefinition of constant Person
.
Como faço para excluir um tipo? Existe outra maneira além de reiniciar o REPL? (Por favor diga sim.)
Revise
?Respostas:
Infelizmente, essa é uma das poucas limitações de
Revise.jl
(e se houvesse uma maneira de fazê-lo, provavelmente seria implementada noRevise
). Portanto, mesmo usandoRevise
você atualmente, você deve reiniciar julia para alterar a definição de um tipo.Deixe-me apenas tentar ilustrar o motivo pelo qual isso atualmente não é possível:
Às vezes, uso o seguinte truque durante o estágio de desenvolvimento de um novo tipo. É um pouco complicado, no entanto, e não tenho certeza se devo aconselhá-lo: use por seu próprio risco.
A ideia consiste em numerar suas definições de tipo reais, nomear seus tipos como
Person1
,Person2
com um número de versão que é incrementado cada vez que a definição é alterada. Para ter usos desses nomes de tipo numerados espalhados por todo o código nas definições de método, você pode temporariamente alias a definição mais recente para um nome comum não numerado.Suponha, por exemplo, que você tenha uma primeira implementação do seu
Person
tipo, com apenas um nome:Agora, suponha que você queira alterar a definição do
Person
tipo para adicionar umid
campo:fonte
Não, isso não é possível sem reiniciar Julia.
fonte