1

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

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

它继续编译,但给了我通知

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

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

4

2 回答 2

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

当心首都!

于 2016-03-08T20:07:44.113 回答
4

道格的答案是正确的,只是你可以将其简化为

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

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

请注意,Julia 错误消息告诉您必须执行的操作 - 替换Uint64UInt64. 如果您能想出一种更好的方式来重新表述信息以使其更清晰,那将很有用。

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

类型注释在 Julia 中用于两种情况: 1. 定义复合类型中的变量类型 2. 对于函数定义中的多次调度,指定给定方法适用于哪些类型。

于 2016-03-08T23:32:34.080 回答