I tipi parametrici di Julia definiscono realmente una famiglia di tipi contenenti layout diversi in memoria. Mi chiedevo se questo funziona anche per i nomi e il numero di campi in un tipo composito? Un semplice esempio potrebbe essere qualcosa di simile:Posso specializzare le definizioni dei tipi in Julia?
type mytype{Float64}
a::Float64
b::Float64
end
type mytype{Int64}
a::Int64
end
Questo mi dà un errore per ridefinire mytype
.
Qui, desidero avere due campi se il parametro di tipo mytype
è Float64
e uno solo se è Int64
. (In realtà ciò che voglio è più complicato, ma questo è un esempio di base). Si potrebbe immaginare di avere tipi astratti e <:
, ecc. In quanto sopra.
Mi rendo conto che questo potrebbe non essere possibile in altre lingue, ma a me sembra che il compilatore dovrebbe essere in grado di capirlo allo stesso modo in cui le funzioni possono essere specializzate. Dopotutto, il codice reale (compilato) coinvolgerà tipi concreti e tutto sarà conosciuto dal compilatore. (per tipi veramente dinamici, forse sarebbe necessario un ulteriore strato di incapsulamento in questo caso?)
Forse c'è un modo diverso/migliore per ottenere risultati simili?