解决 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. 对于函数定义中的多重分派,指定给定方法适用于哪些类型。
我想在 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. 对于函数定义中的多重分派,指定给定方法适用于哪些类型。