Quando provo a creare un Array
con una lista di comprensione, si traduce in un Array{Any, 1}
anche se mi codificare tutti gli elementi a "simbolo":Perché la comprensione di questo elenco restituisce una matrice {Any, 1} invece di una matrice {Symbol, 1}?
julia> u_col_names=[symbol("user_id"), symbol("age"), symbol("sex"), symbol("occupation"), symbol("zip_code")]
5-element Array{Symbol,1}:
:user_id
:age
:sex
:occupation
:zip_code
julia> col_names=["user_id", "age", "sex", "occupation", "zip_code"]
5-element Array{ASCIIString,1}:
"user_id"
"age"
"sex"
"occupation"
"zip_code"
julia> u_col_names=[symbol(col_names[i]) for i in 1:size(col_names)[1]]
5-element Array{Any,1}:
:user_id
:age
:sex
:occupation
:zip_code
Perché quella ultima di lista restituire un Array{Any, 1}
invece di un Array{Symbol, 1}
? Nota che il seguente fa restituire un Array{Symbol, 1}
:
julia> u_col_names=[symbol("col_names$i") for i in 1:size(col_names)[1]]
5-element Array{Symbol,1}:
:col_names1
:col_names2
:col_names3
:col_names4
:col_names5
È interessante notare che, così fa il seguente:
julia> col_names[1]
"user_id"
julia> symbol(col_names[1])
:user_id
julia> [symbol(col_names[1]), symbol(col_names[2])]
2-element Array{Symbol,1}:
:user_id
:age
Che cosa mi manca?
il principio generale è che le funzioni interne, il comp iler conosce "tutto": i tipi di input e le trasformazioni che verranno applicate. Di conseguenza, può specializzarsi in modo più aggressivo. – tholy
@tholy Grazie per il tuo commento. Riesci a pensare a qualche lettura raccomandata a riguardo? – Jubobs