Fare riferimento a Julia doc:Julia-Lang anonima vs comportamento funzione denominata nel passare argomento
In Julia, tutti gli argomenti alle funzioni vengono passati per riferimento.
Quando ottengo l'indirizzo di memoria di un argomento Float64 da una funzione anonima, sembra giusto. ma non è vero per una funzione con nome.
test = function (a::Float64)
println(pointer_from_objref(a));
end
# => (anonymous function)
function test1(a::Float64)
println(pointer_from_objref(a));
end
# => test1 (generic function with 1 method)
value=0.0;
println(pointer_from_objref(value))
# => Ptr{Void} @0x00007fe797c5c020
test(value)
# => Ptr{Void} @0x00007fe797c5c020
test1(value)
# => Ptr{Void} @0x00007fe799e83960
come detto @Gnimuc, c'è un altro punto da Julia-Lang Doc che spiega Argomento Passando Comportamento
argomenti della funzione Julia seguono una convenzione a volte chiamato “pass-by-sharing” , il che significa che i valori non vengono copiati quando vengono trasferiti alle funzioni . Gli stessi argomenti delle funzioni agiscono come nuovi collegamenti alle variabili (nuove posizioni che possono fare riferimento ai valori), ma i valori a cui si riferiscono sono identici ai valori passati.
C'è qualche relazione tra questo comportamento "pass-by-sharing" e il codice sopra?
AFAIK tutti gli argomenti di una funzione vengono passati per riferimento, ad eccezione di dati semplici come numeri e caratteri. Prova a cambiare il tuo numero float all'interno di queste funzioni ... Allo stesso tempo hai trovato qualcosa che contraddice quella regola. Domanda molto interessante Non vedo l'ora di vedere una risposta. –
da [doc] (http://docs.julialang.org/en/latest/manual/functions/#argument-passing-behavior): "Gli stessi argomenti delle funzioni fungono da nuove associazioni di variabili (nuove posizioni che possono riferirsi ai valori) , ma i valori a cui si riferiscono sono identici ai valori passati. " mi chiedo cosa significhi il termine "posizione" qui. – Gnimuc