用户定义类型的隐式转换?

时间:2019-10-22 17:00:06

标签: type-conversion julia

使用以下代码:

import copy
arr = copy.deepcopy(arr1)

现在尝试:

import Base.convert

abstract type MySequential end

struct MyFiniteSequence{T} <: MySequential
       vec::NTuple{N,T} where N
end

Base.convert(MyFiniteSequence, r) = MyFiniteSequence{typeof(r)}((r,))

到目前为止,一切都很好。现在尝试进行隐式转换:

julia> convert(MyFiniteSequence, 1)
MyFiniteSequence{Int64}((1,))

我认为由于{T,N}注释的存在,但不确定如何转换convert的语法。有没有一种方法可以定义convert以获得从Int到struct的隐式转换?

1 个答案:

答案 0 :(得分:2)

我相信在从julia convert0.7的过渡中,对1.0的隐式构造函数调用已被删除。但是只要您想要的话,您就可以定义一个调用convert的构造函数:

julia> MyFiniteSequence(x) = Base.convert(MyFiniteSequence, x)
MyFiniteSequence

julia> MyFiniteSequence(1)
MyFiniteSequence{Int64}((1,))