【问题标题】:Julia: Global variable in a moduleJulia:模块中的全局变量
【发布时间】:2019-05-18 17:59:17
【问题描述】:

我正在尝试在 Julia 中创建一个模块,该模块在每次调用其中一个函数时都会增加一个变量。

module A

a = 0

export get_and_increment_a

function get_and_increment_a()
    a = a + 1
    return a
end

end

using .A
println(get_and_increment_a())
println(get_and_increment_a())

我希望 prinln() 给我

1

2

但我有以下错误信息:

UndefVarError: a not defined

Stacktrace:
 [1] get_and_increment_a() at ./In[1]:8
 [2] top-level scope at In[2]:2

有人知道如何解决这个问题吗?

【问题讨论】:

  • 我之前没有使用过 Julia,但您似乎导出了 get_a 但没有提供任何定义。相反,您提供get_and_increment_a 的定义。
  • 另外你需要写global a = a + 1,否则函数定义将无法按预期工作。

标签: julia


【解决方案1】:

该变量之前没有声明过,如果你想在不声明这样的变量的情况下使用,你必须从某个库中导入或者只是在另一个文件中声明并导入到当前的。

【讨论】:

    【解决方案2】:

    在函数体内移动 a = 0。里面的所有变量都是本地的。 https://docs.julialang.org/en/v1/manual/variables-and-scoping/#Local-Scope

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-10
      • 2015-03-07
      • 1970-01-01
      • 2016-10-20
      • 2016-09-15
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多