以下代码失败。
global Θ=1.0
function f(a)
c=sin(a+θ)
return c
end
f(1)UndefVarError: θ not defined
Stacktrace:
[1] f(a::Int64)
@ Main ./In[1]:3
[2] top-level scope
@ In[1]:6
[3] eval
@ ./boot.jl:373 [inlined]
[4] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
@ Base ./loading.jl:1196它没有失败的理由。
为什么这是不正确的?
如果这不起作用,我可以说人们不能用朱莉娅做任何事。
发布于 2022-06-09 02:19:05
您使用两个不同的字符:全局变量是大写的Theta,而函数内部的变量是小写的θ。
julia> 'Θ'
'Θ': Unicode U+0398 (category Lu: Letter, uppercase)
julia> 'θ'
'θ': Unicode U+03B8 (category Ll: Letter, lowercase)小写的θUndefVarError是一个从未定义过的新变量,因此称为θ。
解决办法是:
julia> Θ=1.0
1.0
julia> function f(a)
c=sin(a+Θ)
return c
end
f (generic function with 2 methods)
julia> f(1)
0.9092974268256817注意,您不需要将全局变量标记为global --默认情况下,它是全局的,只需在任何函数或其他本地范围之外定义即可。(只有当您处于本地范围并希望分配给现有的全局变量时,才需要global。)
https://stackoverflow.com/questions/72553764
复制相似问题