Sto esplorando Julia quindi sono un principiante. Ora sto esplorando le sue caratteristiche fortemente tipizzate. Quello che sto realizzando è che non riesco a vedere l'uso di tipi astratti per gli array. Lasciatemi spiegare un esempio:Utilizzo della matrice di tipi astratti in Julia
Supponiamo che mi piacerebbe creare una funzione che accetta matrici di real, indipendentemente dal suo tipo concreto. Vorrei usare:
function f(x::Array{Real})
# do something
end
Questa funzione può essere mai chiamato senza alzare un f has no method matching f(::Array{Float64,1})
vorrei chiamare f([1,2,3])
o f([1.,2.,3.])
a condizione che il tipo di elemento è reale.
Ho letto che è possibile promuovere o convertire l'array (p.eg f(convert(Array{Real}, [1, 2, 3]))
o giù di lì) ma vedo in questo modo davvero non dinamico e noioso.
C'è qualche altra alternativa piuttosto che eliminare il comportamento fortemente tipizzato?
Grazie.
È possibile definire una funzione parametrica: 'function f {T <: Real} (x :: Array {T})'. Questo catturerebbe sia 'f ([1,2,3])' sia 'f ([1., 2., 3.])'. –
Solo aggiungendo al commento @ user3580870: non ci sono penalità relative alle prestazioni associate alle funzioni parametriche. È una caratteristica assolutamente integrale di Julia. –
Sì, grazie per il tuo commento, hai ragione. Stavo per aggiungere questa alternativa come "alternativa noiosa", ma alla fine me ne sono pentita. Questa soluzione non mi soddisfa perché non può essere utilizzata per funzioni anonime. – TheSorcerer