Я не могу запустить файл .jl в консоли, используя julia 1.0.2, но я могу использовать julia 0.6 - PullRequest
0 голосов
/ 12 декабря 2018

Сценарий действительно прост и хранится в файле с именем 001.jl

sum = 0

for i in 1:10-1
    if i%3 == 0 || i%5 == 0
        sum = sum + i
    end
end

println("The sum is ", sum)

Тем не менее, когда я пытаюсь запустить его в консоли, я получаю эту ошибку

ERROR: LoadError: UndefVarError: sum not defined
Stacktrace:
 [1] top-level scope at /Users/aceves/Documents/MyScripts/julia/001.jl:5 [inlined]
 [2] top-level scope at ./none:0
 [3] include at ./boot.jl:317 [inlined]
 [4] include_relative(::Module, ::String) at ./loading.jl:1044
 [5] include(::Module, ::String) at ./sysimg.jl:29
 [6] include(::String) at ./client.jl:392
 [7] top-level scope at none:0
in expression starting at /Users/aceves/Documents/MyScripts/julia/001.jl:3

Отлично работает с Джулией 0,6.Это также работает, если я ввожу именно это в REPL версии 1.0.2.Мне явно не хватает одной детали.у кого-нибудь есть идеи, которые?

1 Ответ

0 голосов
/ 12 декабря 2018

Как было сказано в комментариях, проблема заключается в изменении области видимости в Julia 1.0.Следует отметить, что во многих примерах, подобных этому, самое простое и быстрое решение заключает в себе весь ваш код в одном блоке let.Блок let вводит локальную область действия:

let    
    sum = 0        
    for i in 1:10-1
        if i%3 == 0 || i%5 == 0
            sum = sum + i
        end
    end        
    println("The sum is ", sum)    
end
...