gpt4 book ai didi

julia - 什么时候使用 Julia 的 convert()?

转载 作者:行者123 更新时间:2023-12-04 10:50:18 24 4
gpt4 key购买 nike

http://julia.readthedocs.org/en/latest/manual/conversion-and-promotion/ ,有一个关于将整数添加到浮点数等的讨论,最后它说

User-defined types can easily participate in this promotion system by defining methods for conversion to and from other types, and providing a handful of promotion rules defining what types they should promote to when mixed with other types.



由此我推断,在定义我自己的数字类型时,我只需要定义如何将其转换为已知类型以使其与函数一起工作。但我试过这个,它似乎不起作用:
julia> type MyType
n::Int
end

julia> convert(::Type{Int}, x::MyType) = x.n
convert (generic function with 1 method)

julia> convert(Int, MyType(1))
1

julia> MyType(1) + 1
ERROR: `+` has no method matching +(::MyType, ::Int64)

最佳答案

您的代码有两个问题:

  • 算术运算符,例如 +只推广 Number 的子类型;
  • 除了转换函数,你还需要定义一个提升规则。

  • 以下应该做你想做的:
    module Test

    import Base: convert, promote_rule

    type MyType <: Number
    n :: Int
    end

    convert(::Type{Int}, x::MyType) = x.n

    promote_rule(::Type{MyType}, ::Type{Int}) = Int

    end

    关于julia - 什么时候使用 Julia 的 convert()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26594395/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com