这两种参数化类型的方式该如何选择?

方式1:

abstract type SensorType end
struct Bright <: SensorType end

mutable struct SensorChannel{T <: SensorType}
    chantype::T
    freq::Int
    base::Float64
end

方式2:

abstract type SensorType end
abstract type Bright <: SensorType end

mutable struct SensorChannel{T <: SensorType}
    freq::Int
    base::Float64
end

我只是想靠参数类型 T 当标识做区分用,这样SensorChannel{Bright}SensorChannel{Gray} 同是SensorChannel 但是这两个具体实例是不同的。
第二种似乎更省空间?

这两种参数化类型的方式该如何选择?

方式 1:

struct MyArray{T, N, AT<:AbstractArray{T,N}} <: AbstractArray{T,N}
    eltype::T
    ndims::N
    data::AT
end

方式 2:

struct MyArray{T, N, AT<:AbstractArray{T,N}} <: AbstractArray{T,N}
    data::AT
end

我不知道你要的是什么,但是如果仅仅是为了提取模板参数的话,随手写一个小函数就可以了,比如说:

eltype(A::MyArray{T}) where T = T

嘿嘿,那我选方式2。可存可不存,那我就不存 :grin:
如果我需要把SensorType用作函数参数做分派的话,我就选方式1

备案号:京ICP备17009874号-2