2014-11-11 10 views
7

Consente di dire che assegnare un tipo di Person in Julia:tipi Ridefinire a Julia: ridefinizione invalido di costante

type Person 
    name::String 
    male::Bool 
    age::Float64 
    children::Int 
end 

function describe(p::Person) 
    println("Name: ", p.name, " Male: ", p.male) 
    println("Age: ", p.age, " Children: ", p.children) 
end 


ted = Person("Ted",1,55,0) 

describe(ted) 

che sarà in uscita con la funzione:

Name: Ted Male: true 
Age: 55.0 Children: 0 

Poi ho modificare le caratteristiche per tipo Person dove ho aggiunto una nuova categoria per il tipo eyes

type Person 
    name::String 
    male::Bool 
    age::Float64 
    children::Int 
    eyes::String 
end 


ted = Person("Ted",1,55,0,brown) 

Se corro la funzione ora ottengo un errore

Error evaluating REPL: 
invalid redefinition of constant Person 
in include_string at loading.jl:97 

Qual è il modo migliore per ovviare a questo, quando lo sviluppo di nuovo codice? oltre a creare un modulo come suggerito nel julia FAQ

+1

Perché non vuoi creare un modulo? È la funzione [workspace()] (http://docs.julialang.org/en/release-0.3/stdlib/base/#Base.workspace) per cancellare il modulo 'Main' in modo più in linea con quello che stai cercando ? –

+0

@ToivoHenningsson Sì, questo è quello che sto cercando. Devi aggiungerlo sopra il tuo script. Puoi metterlo nella risposta e io lo verificherò. Grazie! – ccsv

+0

Questo è particolarmente frustrante per la modifica del codice in [JuliaBox] (https://www.juliabox.org/), dove rieseguire una cella che definisce un tipo produce un errore ...:/ – NHDaly

risposta

8

È possibile utilizzare la funzione workspace() per cancellare il modulo Main se non si desidera inserire il codice nel proprio modulo.

+1

È possibile solo annullare la definizione una singola definizione per il tipo Persona? Quindi la dichiarazione per Persona potrebbe essere "non definita Persona" tipo Persona ... fine'? – NHDaly

+0

Siamo spiacenti, no. Ma creare un modulo per il tuo codice di prova è davvero un modo abbastanza comodo per essere in grado di ricaricarlo senza cancellare tutto, penso che sarebbe la soluzione migliore se ad esempio hai rimosso il tipo. –

+0

Puoi creare moduli separati all'interno di un singolo file 'ipynb'? – NHDaly