我有一个元组:
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/