Есть ли способ заставить словарь постоянным?Неизменяемый словарь
У меня есть функция, которая считывает файл параметров (и игнорирует комментарии) и сохраняет его в Словаре:
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
Это работает просто отлично. Поскольку у меня есть много параметров, которые я буду использовать в разных местах, моя идея заключалась в том, чтобы этот дикт был глобальным. И, как мы все знаем, глобальные переменные не так велики, поэтому я хотел убедиться, что dict и его члены неизменяемы.
Это хороший подход? Как мне это сделать? Должен ли я это делать?
Bonus подотчетны материал :)
Является ли мой код даже нормально? (это первое, что я сделал с julia, и, исходя из c/C++ и python, у меня есть склонности делать что-то по-другому.) Нужно ли мне проверять, действительно ли файл открыт? Я читаю файл «джулия»? Я мог бы также readall
, а затем использовать eachmatch
. Я не вижу «правильный способ сделать это» (например, в python).
Как правило, лучше использовать 'open (filename) do f ... end' синтаксис (см. Http://docs.julialang.org/en/release-0.4/manual/functions/#do-block- syntax-for-function-arguments), чем явно закрывать файл. Во-первых, использование блока do очистит файл, даже если возникает исключение. –