解决 Julia 0.4 弃用 Uint64 的问题

Resolving Julia 0.4 deprecation of Uint64

我想在 Julia 0.4 中创建一个 Uint64 的二维数组。这在 0.3 中有效:

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

它继续编译但给我通知

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

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

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

注意大写!

Doug 的回答是正确的,只是您可以将其简化为

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

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

请注意,Julia 错误消息告诉您必须执行的操作——将 Uint64 替换为 UInt64。如果您能想到一种更好的方式来改写消息以使其更清晰,那将对您有所帮助。

一般来说,在 Julia 中定义变量时,类型注释最多是多余的——类型是从右侧的类型自动推断出来的,这将是分配给正在创建的变量的类型。

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