当前位置:K88软件开发文章中心编程语言非主流编程语言Julia → 文章内容

Julia 类型转换和类型提升

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 16:28:15

面是 Julia 标准库中的例子: promote_rule(::Type{Uint8}, ::Type{Int8}) = Int promote_rule(::Type{Char}, ::Type{Uint8}) = Int32不需要同时定义 promote_rule(::Type{A}, ::Type{B}) 和 promote_rule(::Type{B}, ::Type{A}) —— promote_rule 函数在提升过程中隐含了对称性。promote_type 函数使用 promote_rule 函数来定义,它接收任意个数的类型对象,返回它们作为 promote 参数时,所应返回值的公共类型。因此可以使用 promote_type 来了解特定类型的组合会提升为哪种类型: julia> promote_type(Int8, Uint16) Int64promote 使用 promote_type 来决定类型提升时要把参数值转换为哪种类型。完整的类型提升机制可见 promotion.jl,一共有 35 行。案例:分数类型提升我们结束 Julia 分数类型的案例: promote_rule{T<:Integer}(::Type{Rational{T}}, ::Type{T}) = Rational{T} promote_rule{T<:Integer,S<:Integer}(::Type{Rational{T}}, ::Type{S}) = Rational{promote_type(T,S)} promote_rule{T<:Integer,S<:Integer}(::Type{Rational{T}}, ::Type{Rational{S}}) = Rational{promote_type(T,S)} promote_rule{T<:Integer,S<:FloatingPoint}(::Type{Rational{T}}, ::Type{S}) = promote_type(T,S)

上一页  [1] [2] 


Julia 类型转换和类型提升