gpt4 book ai didi

julia - 函数变量不在 for 循环之外

转载 作者:行者123 更新时间:2023-12-04 14:13:10 24 4
gpt4 key购买 nike

我在 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

如果我运行测试,我发现以下结果:
Inside any, fflag = false
blabla 1
Inside any, fflag = false
blabla 1
Inside any, fflag = false
blabla 1
hey, what is result?

result not defined
at In[7]:57

我不知道为什么编译器说我没有定义“结果”。我知道变量存在,但为什么不在 for 循环之外?

最佳答案

documentation on variable scoping明确指出 for 循环定义了一个新的范围。这意味着 result执行离开 for 循环时超出范围。因此,当您调用 println(result) 时它是未定义的

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

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 循环没有设置值, result将是 -1 .

在第二个例子中,不在 for 循环中设置值将离开 result不明确的。

关于julia - 函数变量不在 for 循环之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com