Julia 函数变量不存在于for循环之外
我在julia中有一个通用函数,目的是说如果 给定维度是否为负。经过几次修改后,我有: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
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]
...