¿Cómo obtener copias profundas de los tipos compuestos de Julia?
Así que aquí está el escenario. Tengo múltiples tipos compuestos definidos con sus propios campos y constructores. Vamos a mostrar dos componentes simplificados aquí:
type component1
x
y
end
type component2
x
y
z
end
Ahora quiero definir un nuevo tipo de modo que pueda guardar una matriz de tamaño K de tipos compuestos previamente definidos en él. Por lo tanto, es un tipo compuesto paramétrico con dos campos: uno es un entero K y el otro es una matriz de tamaño K del tipo pasado.
type mixture{T}
components::Array{T, 1}
K::Int64
function mixture(qq::T, K::Int64)
components = Array{typeof(qq), K}
for k in 1:K
components[k] = qq
end
new(components, K)
end
end
Pero esta no es la forma correcta de hacerlo. Debido a que todos los componentes K se refieren a un objeto y manipulan los componentes de la mezcla [k] afectarán a todos los componentes K. En python puedo remediar esto con una copia profunda. Pero la copia profunda en Julia no está definida para los tipos compuestos. ¿Cómo resuelvo este problema?