C'è un modo per far sì che un dizionario sia costante?Dizionario immutabile
Ho una funzione che legge un file per i parametri (e ignora commenti) e lo memorizza in un dict:
function getparameters(filename::AbstractString)
f = open(filename,"r")
dict = Dict{AbstractString, AbstractString}()
for ln in eachline(f)
m = match(r"^\s*(?P<key>\w+)\s+(?P<value>[\w+-.]+)", ln)
if m != nothing
dict[m[:key]] = m[:value]
end
end
close(f)
return dict
end
Questo funziona bene. Dato che ho molti parametri, che finirò per usare in posti diversi, la mia idea era di lasciare che questo dict fosse globale. E come tutti sappiamo, le variabili globali non sono così grandi, quindi volevo assicurarmi che il ditt ei suoi membri fossero immutabili.
È un buon approccio? Come lo faccio? Devo farlo?
Bonus roba risponde :)
è il mio codice ancora ok? (È la prima cosa che ho fatto con julia, e venendo da c/C++ e python ho la tendenza a fare le cose in modo diverso.) Devo controllare se il file è effettivamente aperto? La mia lettura del file "julia" è simile? Potrei anche readall
e quindi utilizzare eachmatch
. Non vedo il "modo giusto per farlo" (come in Python).
Generalmente è meglio utilizzare la sintassi 'open (nomefile) do f ... end' (consultare http://docs.julialang.org/en/release-0.4/manual/functions/#do-block- sintassi-per-funzione-argomenti) piuttosto che chiudere il file esplicitamente. Per uno, l'uso del blocco do pulirà il file anche se si verifica un'eccezione. –