Ich habe eine Methode, die 1+ Parameter jede Klasse, ähnlich wie Array#push nehmen soll:Der beste Weg, um "gespritzte" Parameter mit YARD zu dokumentieren?
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
Was ist der beste Weg, um zu dokumentieren, die Verfahrensparameter mit YARD Syntax?
Edit:
Ich weiß, dass meine ursprüngliche Frage etwas zu vage war und nicht ganz fest, was ich suchte.
Eine bessere Frage wäre, was ist der beste Weg, um die Arität einer Methode (1-∞ in diesem Fall) in YARD anzugeben, wenn ein Splatter-Parameter verwendet wird? Ich weiß, dass ich es im Text nur spezifizieren konnte, aber es scheint, dass dort ein Tag sein sollte oder etwas Ähnliches, um Arity zu spezifizieren.
ich meine Frage aktualisiert etwas präziser zu sein. Das einzige Problem mit 'Array
Ich denke immer noch, dass "Überladung" das am besten geeignete (und verfügbare) Tag wäre, zumal es keinen technischen Grund dafür gibt, dass die Methode keine leere Liste akzeptieren kann (aus einer Methodendefinitionsperspektive) - die Dokumente dafür sehen sehr passend aus : http://www.rubydoc.info/gems/yard/file/docs/Tags.md#overload. Was, wenn Sie die Methodendefinition in etwas wie 'my_push (first_object, * more_objects)' geändert haben und sie dann kombinieren und reduzieren. Nicht schön, ich gebe zu, aber erhält die durchsetzbare Arity ... – davemyron
Das Problem, das ich mit '@param [Array]' sehe, ist, dass der Splat ein Array-Argument ohne Splatter umhüllt: 'def push3 (* args) ; args.inspect Ende; push3 ([]) # => [[]] ' *** Bearbeiten **: Ich kann SO überhaupt nicht überzeugen, einen mehrzeiligen Kommentarblock zu formatieren * – carp