¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta