Julia 函数变量不存在于for循环之外

Julia 函数变量不存在于for循环之外,julia,Julia,我在julia中有一个通用函数,目的是说如果 给定维度是否为负。经过几次修改后,我有: function any(vec) dim = size(vec) for i in 1:dim[2] fflag = vec[1,i] < 0 println("Inside any, fflag = ", fflag) if fflag == true result = 0 printl

我在julia中有一个通用函数,目的是说如果 给定维度是否为负。经过几次修改后,我有:

function any(vec)
    dim = size(vec)
    for i in 1:dim[2]
        fflag = vec[1,i] < 0 
        println("Inside any, fflag = ", fflag)
        if fflag == true
            result = 0
            println("blabla ", result)
            break
        else
            result =1
            println("blabla ", result)
            continue
        end
    end
    println("hey, what is result? ")
    println(result)
    return result
end
我不知道为什么编译器告诉我“结果”没有定义。我知道变量存在,但为什么不存在于for循环之外?

该变量清楚地表明for循环定义了一个新的范围。这意味着当执行离开for循环时,
result
将超出范围。因此,当您调用
println(result)

在for循环之前定义
result
应该给出您期望的行为:

function any(vec)
    dim = size(vec)
    result = -1
    for i in 1:dim[2]
       ...
或者,如果不希望指定默认值,并且确信for循环将设置其值,则可以执行以下操作:

function any(vec)
    dim = size(vec)
    local result
    for i in 1:dim[2]
       ...
在第一个示例中,如果for循环没有设置值,
结果将是
-1


在第二个示例中,不在for循环中设置值将使
结果
未定义。

您也可以事先执行
本地结果
,而无需赋值。StefanKarpinsk您能更详细地解释一下您的意思吗?我一直在使用上面的答案,但我不想再为for循环之外的初始定义指定特定值了。@user3061923我在答案中添加了更多细节。希望这有帮助!有没有类似的东西可以在通用代码中使用,而不是在函数定义中使用?
function any(vec)
    dim = size(vec)
    local result
    for i in 1:dim[2]
       ...