Die folgenden Werke:Julia: warum müssen parametrische Typen äußere Konstruktoren haben?
type TypeA
x :: Array
y :: Int
TypeA(x :: Array) = new(x, 2)
end
julia> y = TypeA([1,2,3])
TypeA([1,2,3],2)
Dies gilt nicht:
type TypeB{S}
x :: Array{S}
y :: Int
TypeB{S}(x:: Array{S}) = new(x,2)
end
julia> y = TypeB([1,2,3])
ERROR: `TypeB{S}` has no method matching TypeB{S}(::Array{Int64,1})
Um den zweiten Fall zur Arbeit zu kommen, muss man den Konstruktor außerhalb der Typdeklaration deklarieren. Dies ist leicht unerwünscht. Meine Frage ist, warum dieses Problem aus einer Julia-Design-Sicht existiert, so dass ich besser über das Julia-Typ-System nachdenken kann.
Vielen Dank.