Ho un metodo che dovrebbe prendere 1+ parametri di qualsiasi classe, simile a Array#push:Il modo migliore per documentare il parametro "splattato" con YARD?
def my_push(*objects)
raise ArgumentError, 'Needs 1+ arguments' if objects.empty?
objects.each do |obj|
puts "An object was pushed: #{obj.inspect}"
@my_array.push obj
end
end
Qual è il modo migliore per documentare i parametri del metodo utilizzando la sintassi YARD?
Edit:
mi rendo conto che la mia domanda iniziale era un po 'troppo vaga e non riusciva a specificare quello che stavo cercando.
Una domanda migliore sarebbe, qual è il modo migliore per specificare l'arità di un metodo (1-∞ in questo caso) in YARD quando si utilizza un parametro splattato? So che potrei semplicemente specificarlo nel testo, ma sembra che ci sia dovrebbe essere un tag o qualcosa di simile a specificare l'arità.
Ho aggiornato la mia domanda per essere un po 'più specifico. L'unico problema con 'Array
Continuo a pensare che 'overload' sarebbe il tag più appropriato (e disponibile), soprattutto perché non esiste alcun motivo _tecnico perché il metodo non possa accettare una lista vuota (dal punto di vista della definizione del metodo) - i documenti per esso sembrano molto appropriati : http://www.rubydoc.info/gems/yard/file/docs/Tags.md#overload. Cosa succede se hai cambiato la definizione del metodo in qualcosa come 'my_push (first_object, * more_objects)' e poi li combini e li appiattisci. Non bello, lo ammetto, ma ottiene l'ambito esecutivo ... – davemyron
Il problema che vedo con '@param [Array]' è che lo splat racchiude un argomento Array non splattato in una matrice: 'def push3 (* args) ; args.inspect end; push3 ([]) # => [[]] ' *** Modifica **: Non riesco completamente a convincere SO a formattare un blocco di commenti su più righe * – carp