首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Julia全局变量抛出UndefVarError

Julia全局变量抛出UndefVarError
EN

Stack Overflow用户
提问于 2022-06-09 01:23:07
回答 1查看 72关注 0票数 1

以下代码失败。

代码语言:javascript
复制
global Θ=1.0
function f(a)
    c=sin(a+θ)
    return c
end
f(1)
代码语言:javascript
复制
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

它没有失败的理由。

为什么这是不正确的?

如果这不起作用,我可以说人们不能用朱莉娅做任何事。

EN

回答 1

Stack Overflow用户

发布于 2022-06-09 02:19:05

您使用两个不同的字符:全局变量是大写的Theta,而函数内部的变量是小写的θ。

代码语言:javascript
复制
julia> 'Θ'
'Θ': Unicode U+0398 (category Lu: Letter, uppercase)

julia> 'θ'
'θ': Unicode U+03B8 (category Ll: Letter, lowercase)

小写的θUndefVarError是一个从未定义过的新变量,因此称为θ。

解决办法是:

代码语言:javascript
复制
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。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72553764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档