2016-11-08 6 views
2

Ich betrachte ein Rubin MethodeWie ein Splat als Ruby-Methode Parameter

def test(*) 
    puts "hello" 
end 

Ich bin verwirrt über die * verwenden. Offensichtlich, wenn ich Test tue, gibt es "Hallo" zurück. Aber was, wenn ich ein Argument in Test bestehen ...

test("this argument") 

Wie rufe ich diese Methode in der Testmethode noch immer noch die Splatter haben? Ich bin nur schrecklich verwirrt darüber, einen Namen ohne Namen zu haben. Wie funktioniert es?

+2

Diese helfen könnten: http://stackoverflow.com/questions/5249537/naked- Sternchen-als-Parameter-in-Methode-Definition-def-f – orde

+0

@Orde Danke. Aber was ich wissen möchte ist, wie kann ich ein Argument aufrufen, das in die Methode übernommen wird. Muss ich es dann als 'def test (* args)' definieren? – jason328

+0

Ich werde ehrlich sein: das erste Mal habe ich den nackten Splat Operator gesehen. Aber - wenn Sie etwas tun wie 'def foo (* args); legt Argumente; end '- dann werden die Methodenargumente in ein' args'-Array gesammelt, und Sie können 'foo (1,2) # => 1 2' eingeben. – orde

Antwort

0

Dieser Beitrag hat eine ziemlich detaillierte geringe Erklärung: http://blog.honeybadger.io/ruby-splat-array-manipulation-destructuring/

den relevanten Teil zu zitieren:

def go(x, *args, y) 
    puts x # => 1 
    puts y # => 5 
    puts args.inspect # => [2,3,4] 
end 

go(1, 2, 3, 4, 5) 
+2

Bitte fügen Sie eine Zusammenfassung des Blogposts zu Ihrer Antwort hinzu. Beschreiben Sie zumindest die Teile, die die Frage beantworten. Link-only-Antworten sind bei Stack Overflow verpönt, da externe Links sich schnell verschlechtern und verschwinden. –

+0

Fest und in Produktion – whodini9

+0

So macht dieser Teil für mich Sinn. Worüber ich verwirrt bin, ist was passiert, wenn die Argumente nicht da sind? Muss ich die Argumente in die Methodenparameter eingeben, um die gewünschten Parameter zu erhalten? Ich nehme es an. – jason328

Verwandte Themen