questo può essere fatto utilizzando la seguente sintassi:
(::Type{MyType{T}}){T}() = MyType{T}(T[])
La cosa nel primo set di parentesi descrive l'oggetto chiamato. ::T
significa "di tipo T", quindi questa è una definizione per chiamare un oggetto di tipo Type{MyType{T}}
, che significa l'oggetto MyType{T}
stesso. Il prossimo {T}
significa che T
è un parametro di questa definizione e che un valore deve essere disponibile per chiamare questa definizione. Quindi corrispondenze MyType{Int}
, ma non lo è lo MyType
. Da lì in poi, la sintassi dovrebbe essere familiare.
Questa sintassi è decisamente un po 'complicata e non intuitiva, e speriamo di migliorarla in una versione futura della lingua, si spera v0.6.
fonte
2016-08-24 17:44:19
Devo aggiungere che questa sintassi è disponibile solo a partire dalla v0.5. –