NamedTupleTools
包中包含很多旨在利用NamedTuples的工具更多
直截了当。但是这里有一些可以执行的基本操作
“手动”在他们身上:
创作
# regular syntax
julia> nt = (a=1, b=2.)
(a = 1, b = 2.0)
# empty named tuple (useful as a seed that will later grow)
julia> NamedTuple()
NamedTuple()
# only one entry => don't forget the comma
julia> (a=1,)
(a = 1,)
增长和“修改”
可以
merge二
命名元组来创建一个新的:
julia> merge(nt, (c=3, d=4.))
(a = 1, b = 2.0, c = 3, d = 4.0)
...或者通过在创建一个
新的:
julia> (; nt..., c=3, d=4.)
(a = 1, b = 2.0, c = 3, d = 4.0)
当同一个字段名多次出现时,最后一次出现是
保留。这允许一种“带修改的复制”的形式:
julia> nt
(a = 1, b = 2.0)
julia> merge(nt, (b=3,))
(a = 1, b = 3)
julia> (; nt..., b=3)
(a = 1, b = 3)
动态操作
在上述各种技术中使用field=>value 对允许
更动态的操作:
julia> field = :c;
julia> merge(nt, [field=>1])
(a = 1, b = 2.0, c = 1)
julia> (; nt..., field=>1)
(a = 1, b = 2.0, c = 1)
同样的技术可用于从现有的动态数据结构构建NamedTuples
julia> dic = Dict(:a=>1, :b=>2);
julia> (; dic...)
(a = 1, b = 2)
julia> arr = [:a=>1, :b=>2];
julia> (; arr...)
(a = 1, b = 2)
迭代
迭代 NamedTuple 迭代其值:
julia> for val in nt
println(val)
end
1
2.0
与所有键->值结构一样,
keys函数
可用于遍历字段:
julia> for field in keys(nt)
val = nt[field]
println("$field => $val")
end
a => 1
b => 2.0