为Julia 1.0更新此语句

为Julia 1.0更新此语句,julia,julia-1.x,Julia,Julia 1.x,有人能解释一下如何为Julia 1.0更新这个吗 function _encode_zigzag{T <: Integer}(n::T) num_bits = sizeof(T) * 8 (n << 1) ⊻ (n >> (num_bits - 1)) end 函数_encode_zigzag{T(num_bits-1)) 结束 还有什么区别呢 function _encode_zigzag(n::Integer) num_bits =

有人能解释一下如何为Julia 1.0更新这个吗

function _encode_zigzag{T <: Integer}(n::T)
    num_bits = sizeof(T) * 8
    (n << 1) ⊻ (n >> (num_bits - 1))
end
函数_encode_zigzag{T(num_bits-1))
结束
还有什么区别呢

function _encode_zigzag(n::Integer)
    num_bits = sizeof(T) * 8
    (n << 1) ⊻ (n >> (num_bits - 1))
end
函数_encode_之字形(n::Integer)
num_bits=sizeof(T)*8
(n>(数字位-1))
结束

首先,在Julia 1.x中,类型参数的子类型约束在参数后面,后面是保留字
,其中

function _encode_zigzag(n::T) where {T <: Integer}
    num_bits = sizeof(T) * 8
    (n << 1) ⊻ (n >> (num_bits - 1))
end
函数_encode_zigzag(n::T),其中{T(num_位-1))
结束
当只有一个类型参数时,不需要使用大括号,但为清晰起见,建议保留大括号

现在来看第二个问题。在n为整数的方法版本中,sizeof将不起作用,因为抽象类型的大小未定义。在这种情况下,建立子类型约束有助于确保给定参数具有已定义的大小,同时仍为不同类型提供灵活性。Julia将编译different函数的t个版本;传递的每个整数子类型一个

这比用n声明具有像Int64这样的具体类型的函数更有效,因为这意味着在执行函数之前必须将参数转换为相同的类型


您可以在.

中阅读更多内容。首先,在Julia 1.x中,类型参数的子类型约束在参数之后,后面是保留字
,其中

function _encode_zigzag(n::T) where {T <: Integer}
    num_bits = sizeof(T) * 8
    (n << 1) ⊻ (n >> (num_bits - 1))
end
函数_encode_zigzag(n::T),其中{T(num_位-1))
结束
当只有一个类型参数时,不需要使用大括号,但为清晰起见,建议保留大括号

现在来看第二个问题。在n为整数的方法版本中,sizeof将不起作用,因为抽象类型的大小未定义。在这种情况下,建立子类型约束有助于确保给定参数具有已定义的大小,同时仍为不同类型提供灵活性。Julia将编译different函数的t个版本;传递的每个整数子类型一个

这比用n声明具有像Int64这样的具体类型的函数更有效,因为这意味着在执行函数之前必须将参数转换为相同的类型


您可以在。

中阅读更多内容。您也可以编写
num\u bits=sizeof(n)*8
,然后使用
\u encode\u zigzag(n::Integer
签名就足够了。另外请注意,如果
n
类型为
BigInt
,这两种方法都会产生错误的结果。您也可以编写
num\u bits=sizeof(n)*8
然后使用
\u encode_zigzag(n::Integer
签名就足够了。还要注意,如果
n
类型为
BigInt
,这两种方法都会产生错误的结果。