解决Uint64的Julia 0.4弃用问题

时间:2016-03-08 20:01:36

标签: julia deprecation-warning

我想在Julia 0.4中创建一个Uint64s的2D数组。这工作在0.3:

s = 128
a = zeros(Uint64, s, s)::Array{Uint64,2}

它继续编译但给我通知

WARNING: Base.Uint64 is deprecated, use UInt64 instead.

我不知道这个消息是什么意思。我试过谷歌搜索错误信息,但没有发现任何有用的东西。什么是不会产生任何警告的等效代码行?

2 个答案:

答案 0 :(得分:4)

s = 128
a = zeros(UInt64, s, s)::Array{UInt64,2}

留意首都!

答案 1 :(得分:4)

道格的回答是正确的,除了你可以将其简化为

s = 128
a = zeros(UInt64, s, s)

您不需要类型注释::Array{UInt64,2}。定义a = zeros(UInt64, s, s)将创建一个知道其类型的变量。

请注意,Julia错误消息告诉您必须执行的操作 - 将Uint64替换为UInt64。如果你能想出一种更好的方式来重新改写信息,那么听听就更有用了。

通常,在Julia中定义变量时,类型注释最多是冗余的 - 从右侧的类型自动推断出类型,这将是分配给正在创建的变量的类型。

在两种情况下,Julia中使用了类型注释: 1.在复合类型中定义变量的类型 2.对于函数定义中的多个分派,指定给定方法适用的类型。