当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia Core.NamedTuple用法及代码示例


用法:

NamedTuple

顾名思义,NamedTuple 被命名为 Tuple 。也就是说,它们是一个 tuple-like 值集合,其中每个条目都有一个唯一的名称,表示为 Symbol 。与 Tuple 一样,NamedTuple 是不可变的;名称和值都不能在构造后就地修改。

可以使用字段访问语法来访问与命名元组中的名称关联的值,例如x.a ,或使用 getindex ,例如x[:a]x[(:a, :b)] 。名称的元组可以使用 keys 获得,值的元组可以使用 values 获得。

注意

NamedTuple 的迭代会生成不带名称的 values。 (参见下面的示例。)要迭代 name-value 对,请使用 pairs 函数。

@NamedTuple 宏可用于方便地声明NamedTuple 类型。

例子

julia> x = (a=1, b=2)
(a = 1, b = 2)

julia> x.a
1

julia> x[:a]
1

julia> x[(:a,)]
(a = 1,)

julia> keys(x)
(:a, :b)

julia> values(x)
(1, 2)

julia> collect(x)
2-element Vector{Int64}:
 1
 2

julia> collect(pairs(x))
2-element Vector{Pair{Symbol, Int64}}:
 :a => 1
 :b => 2

与如何以编程方式定义关键字参数的方式类似,可以通过给出一对 name::Symbol => value 或在元组文字内的分号后生成这样的对的迭代器来创建命名元组:

julia> (; :a => 1)
(a = 1,)

julia> keys = (:a, :b, :c); values = (1, 2, 3);

julia> (; zip(keys, values)...)
(a = 1, b = 2, c = 3)

与关键字参数一样,标识符和点表达式隐含名称:

julia> x = 0
0

julia> t = (; x)
(x = 0,)

julia> (; t.x)
(x = 0,)

Julia 1.5

从 Julia 1.5 开始,标识符和点表达式中的隐式名称可用。

Julia 1.7

从 Julia 1.7 开始,可以使用带有多个 Symbolgetindex 方法。

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Core.NamedTuple — Type。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。