在 Julia 中,如何调度不同类型的“MutableNamedTuple”

问题描述 投票:0回答:1

我的 Julia 代码使用许多不同类型的

MutableNamedTuples
例如

box = MutableNamedTuple

CSV(file::String)  = box(rows=[], file=file)
NUM() = box(n=0,mu=0, sd=0, m2=0)

我想在不同类型的

MutableNamedTuples
上调度方法。

但是我该怎么做呢?

是否可以生成

MutableNamedTuples
的子类型?

或者我应该采取不同的方法?

(理想情况下,就像使用

MutableNamedTuples
一样简洁,但我会接受任何东西,谢谢。)

julia tuples subtyping
1个回答
0
投票

你可以调度,但它似乎不如使用可变

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
© www.soinside.com 2019 - 2024. All rights reserved.