julia - 复制元组并修改

标签 julia

我有一个元组:

my_tup=(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9)

我想修改这个元组中的一个值。因为元组是不可变的,所以明显的路线不起作用:
my_tup[:a]=50 #Raises an error, as expected

因此,要执行修改,我想在更改目标元素的同时复制元组及其元素。

我目前的解决方案如下:
my_tup=(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9)
args = keys(my_tup)
NamedTuple{args}(i!=:a ? getfield(my_tup, i) : 50 for i in args)

但这似乎很冗长,或者好像标准库中应该已经有一个函数了。

有没有更好的办法?

最佳答案

你可以 merge 两个命名元组:

julia> xs = (a = 1, b = 2, c = 3)
(a = 1, b = 2, c = 3)

julia> ys = merge(xs, (; a = 50))
(a = 50, b = 2, c = 3)

关于julia - 复制元组并修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358462/

相关文章:

dictionary - Julia 中的复合类型 : Dictionaries as a named field?

database - 数据框到数据库表

openstreetmap - Julia 版本 0.4.5 Openstreetmap

julia - 如何在 Julia 中将字符串解析为 float 或 int?

julia - 自动生成 IJulia 笔记本

c - 如何在 Julia v0.4 中处理 c void

python - Julia 球谐函数与 python 不同

arrays - 如何将向量的元素设置为指向数组数组中的第一个元素?

julia - Julia 1.0 中 "workspace()"的替代方案是什么?

data-structures - Julia 中的元组与静态向量