我的 Julia 代码使用许多不同类型的
MutableNamedTuples
例如
box = MutableNamedTuple
CSV(file::String) = box(rows=[], file=file)
NUM() = box(n=0,mu=0, sd=0, m2=0)
我想在不同类型的
MutableNamedTuples
上调度方法。
但是我该怎么做呢?
是否可以生成
MutableNamedTuples
的子类型?
或者我应该采取不同的方法?
(理想情况下,就像使用
MutableNamedTuples
一样简洁,但我会接受任何东西,谢谢。)
你可以调度,但它似乎不如使用可变
structs
舒服。
考虑以下功能:
using MutableNamedTuples
f(a::MutableNamedTuple{(:x, :y), Tuple{Base.RefValue{Int64}, Base.RefValue{Int64}}}) = 10*a.x
f(a::MutableNamedTuple{(:x, :z), Tuple{Base.RefValue{Int64}, Base.RefValue{Int64}}}) = 100*a.x
现在你可以做
julia> a1 = MutableNamedTuple(x=1, y=2);
julia> a2 = MutableNamedTuple(x=1, z=2);
julia> f(a1)
10
julia> f(a2)
100