Ошибка UndefVarError внутри области «@time«

#julia

#julia

Вопрос:

У меня есть следующий фрагмент кода:

 @time begin

    results = nothing

    for i in 1:3

        if results == nothing
            results = DataFrame(A=1, B=2)
        else
            results = vcat(results, DataFrame(A=1, B=2))
        end
    end

end
  

Без @time begin/end части код выполняется нормально.

Однако внутри @time begin/end части я получаю UndefVarError: results not defined .

Кто-нибудь знает, что происходит?

Комментарии:

1. Вы используете записную книжку Jupyter?

2. Да, это так…….

3. Это ошибка в SoftGlobalScope.jl. Сообщите об этом здесь: github.com/stevengj/SoftGlobalScope.jl/issues/new

Ответ №1:

Мне кажется, что у вас ошибка определения области. Ваше присвоение results происходит в области, к которой не имеет доступа остальная часть блока. Вы можете исправить это, указав, что вы выполняете назначение в своей локальной области:

 @time begin

    local results = nothing

    for i in 1:3

        if results == nothing
            results = DataFrame(A=1, B=2)
        else
            results = vcat(results, DataFrame(A=1, B=2))
        end
    end

end
  

Обратите внимание, что вы получили бы ту же ошибку только с begin ... end блоком, без @time .