Durante la lettura di Julia sul http://learnxinyminutes.com/docs/julia/ mi sono imbattuto in questo:Spiegazione di splat
# You can define functions that take a variable number of
# positional arguments
function varargs(args...)
return args
# use the keyword return to return anywhere in the function
end
# => varargs (generic function with 1 method)
varargs(1,2,3) # => (1,2,3)
# The ... is called a splat.
# We just used it in a function definition.
# It can also be used in a fuction call,
# where it will splat an Array or Tuple's contents into the argument list.
Set([1,2,3]) # => Set{Array{Int64,1}}([1,2,3]) # produces a Set of Arrays
Set([1,2,3]...) # => Set{Int64}(1,2,3) # this is equivalent to Set(1,2,3)
x = (1,2,3) # => (1,2,3)
Set(x) # => Set{(Int64,Int64,Int64)}((1,2,3)) # a Set of Tuples
Set(x...) # => Set{Int64}(2,3,1)
che sono sicuro che è una perfetta buona spiegazione, ma non riesco a cogliere le principali Idea/benefici.
Da quello che ho capito finora:
- Utilizzo di un simbolo in una definizione di funzione ci permette di specificare che non abbiamo alcuna idea di come molti argomenti di input sarà data la funzione, potrebbe essere 1, potrebbe essere di 1000 Non vedo davvero il beneficio di questo, ma almeno capisco (spero) il concetto di questo.
- Utilizzare uno splat come argomento di input per una funzione fa ... Che cosa esattamente? E perché dovrei usarlo? Se dovessi inserire il contenuto di una matrice nella lista degli argomenti, userei questa sintassi: some_array (:, :) (per gli array 3D vorrei usare some_array (:,:, :) ecc.).
Credo che parte del motivo per cui non capisco questo è che sto lottando con la definizione di tuple e array, sono tuple e tipi di matrici di dati (come Int64 è un tipo di dati) a Julia? O sono strutture di dati e cos'è una struttura di dati? Quando ascolto array di solito penso a una matrice 2D, forse non è il modo migliore di immaginare gli array in un contesto di programmazione?
Mi rendo conto che potresti probabilmente scrivere interi libri su cosa sia una struttura dati, e potrei sicuramente Google, tuttavia trovo che le persone con una profonda comprensione di un argomento sono in grado di spiegarlo in un modo molto più succinto (e forse semplificato), quindi diciamo che l'articolo di wikipedia potrebbe, ed è per questo che ti sto chiedendo ragazzi (e ragazze).
Grazie mille :) – kip820