Вот простой пример того, как работают правила области видимости при использовании цикла while
.
Первый пример использования while
внутри main:
julia> outvar = 5
5
julia> invar = 5
5
julia> while true
global outvar
invar = outvar
outvar += 1
if outvar > 10
break
end
end
julia> outvar
11
julia> invar
5
Итак, я определил обаoutvar
и invar
вне цикла while, получили доступ к переменной outvar
вне области действия while
, вызвав global outvar
, чтобы цикл работал и обновлял outvar
.Но наша переменная invar
по-прежнему имеет значение 5, поскольку переменная invar
внутри цикла while
не связана с внешней частью цикла while
- она живет в своей крошечной вселенной.
Простой способ исправить это - создать функцию:
function add_nums(outvar)
invar = outvar
while true
invar = outvar
outvar += 1
if outvar > 10
break
end
end
return invar
end
Это займет outvar
, определяет invar
вне цикла while
, так что вы можете добавить дополнительную логику здесь, если хотитеи выполняет цикл и возвращает ваш новый invar
.
Когда у вас есть эта функция, вы можете легко достичь цели оригинального цикла while:
julia> outvar = 5
5
julia> invar = add_nums(outvar)
10
Еще лучше, ваш *Переменная 1032 * зависит от этих вызовов функций:
julia> outvar
5
Я надеюсь, что приведенный выше пример поможет вам достичь того, что вы хотите.Вам просто нужно создать функцию, которая реализует логику загрузки вашего файла.