【发布时间】:2021-09-13 11:46:36
【问题描述】:
这是一些损坏的代码:
struct NumberedList
index::Int64
values::Vector{Int64}
NumberedList(i) = new(i, Int64[])
end
function set_values!(list::NumberedList, new_values::Vector{Int64})
list.values = new_values
end
# ---
mylist = NumberedList(1)
set_values!(mylist, [1, 2, 3])
我不想做这些:
- 我可以将
NumberedList声明为mutable struct(使一切都是可变的) - 我可以将
set_values!替换为类似这样的内容(复制所有值):
function set_values!(list::NumberedList, new_values::Vector{Int64})
for i in new_values
push!(list.values, i)
end
end
但我想使index 不可变,但允许分配values。
其他说明:
- 话语中的线程:“Mutable field in immutable type”,但这不适用于此设置中的向量。
【问题讨论】:
标签: julia immutability