`在julia中使用嵌套复合类型时,size`没有与size(::Data{Float32})匹配的方法

`在julia中使用嵌套复合类型时,size`没有与size(::Data{Float32})匹配的方法,julia,Julia,假设我定义了一个复合类型“Data”,如下所示: type DataFormat format1::DataType format2::Uint format3::Uint format4::Ptr{None} end type Data{T} <: AbstractVector{T} value::Vector{T} format::DataFormat end julia的size()函数似乎有问题,我如何修复它? 我对jul

假设我定义了一个复合类型“Data”,如下所示:

type DataFormat
    format1::DataType
    format2::Uint
    format3::Uint
    format4::Ptr{None}
end

type Data{T} <: AbstractVector{T}
    value::Vector{T}
    format::DataFormat    
end
julia的size()函数似乎有问题,我如何修复它?
我对julia很陌生,不知道这样使用“嵌套”复合类型是否是一个好选择?

扩展
大小相对简单:

julia> import Base.size

julia> size(d::Data) = size(d.value)
size (generic function with 51 methods)
如果希望数据类型支持迭代和索引等其他操作,还需要定义
getindex
、start、next、length和done


编辑:请参阅下面的注释,了解为什么不需要开始、下一步、长度和完成。

只需要
大小
获取索引
,以及
设置索引
相似
,如果您想要可变性。根据索引和数组大小,“免费”提供start/next/length/done(以及许多其他方法)。请参阅:如果OP希望为数据中的项目执行类似于
的操作,我认为需要
开始
下一步
、和
完成
length
通常简化了
done
Yup的定义,但是这些已经在
size
getindex
方面为所有
AbstractArray
定义了!这是,这是。有很多这样的通用函数-不要编写超过需要的代码!啊。很高兴知道。我已经更新了我的答案,所以它不再包含谎言。如果你的答案有用,我应该阅读更多关于AbstractArray的文档
julia> import Base.size

julia> size(d::Data) = size(d.value)
size (generic function with 51 methods)