Julia将全局变量分配给全局m中的元组时出错,n=大小(x);

Julia将全局变量分配给全局m中的元组时出错,n=大小(x);,julia,Julia,我希望全局变量m和n得到第一维和第二维的大小。然而,它似乎不正确: julia> x=rand(3,3) 3×3 Array{Float64,2}: 0.680079 0.929336 0.267358 0.874437 0.625239 0.804478 0.92407 0.737254 0.443433 julia> m,n = size(x); julia> m,n (3,3) julia> global m,n = size(x); jul

我希望全局变量m和n得到第一维和第二维的大小。然而,它似乎不正确:

julia> x=rand(3,3)
3×3 Array{Float64,2}:
 0.680079  0.929336  0.267358
 0.874437  0.625239  0.804478
 0.92407   0.737254  0.443433

julia> m,n = size(x);
julia> m,n
(3,3)

julia> global m,n = size(x);
julia> m,n
(3,(3,3))

为什么在添加全局关键字时,将两个变量分配给一个元组的行为不同?

它似乎在逗号处拆分语句。如果你这么做的话

x = rand(3,3)
global m,n = size(x)
在新的会话中,您将看到未定义
m
(在您的示例中,它是根据前面的语句定义的)
global
从赋值中取出
m
,并将结果赋值给
n

我想你必须这么做

global m = size(x,1)
global n = size(x,2)

Julia 0.6给出了一个折旧警告
改用“global m;global n=size(x)”。
这提供了解释表达式的线索。你可以使用
global(m,n)=size(x)
来获得你想要的。很好。我试过了,在0.5上收到了一条错误消息——但这是直观的解决方案。