2009-05-02 3 views
1
Ramaze.start :port => 80 

Wenn mein Verständnis richtig ist, über die Linie ein Methodenaufruf in Ruby ist und man könnte auch schreiben als:Was bedeutet der Pfeil nach rechts in diesem Code tun: „Ramaze.start: port => 80“

Aber in beiden Fällen, was bedeutet es, wenn Sie das Zeichen => zwischen dem Symbol: Port und der Zahl 80 setzen?

Ist das ein Weg, einen Hash zu erstellen?

Wenn die Ramaze.start-Methode die Methodenparameter empfängt, was ist der Typ des Arguments?

Wird es als Schlüssel/Wert-Paar mit einem Argument empfangen?

Oder es als zwei Argumente erhalten:: Port und 80?

Antwort

8

Es schafft eine hashmap, wo das Symbol: Port ist der Schlüssel und der Wert ist 80.

-7

Es ist eine Lambda genannt wird. Es ist eine kurze Art, eine Methode zu deklarieren. Zum Beispiel kann ich sagen myBirthday => myBirthday.Where (etwas Wert). Beachten Sie, wie Sie das Objekt selbst in die verkürzte Funktion einbringen. In Ihrem Fall übergeben Sie einen Port mit einem Wert von 80 und geben dann das Port-Objekt zurück.

+0

Nein Nein Nein Nein. Dies ist falsch und irreführend. Siehe die akzeptierte Antwort. – Krease

4

Wenn Sie eine Methode haben, bei der der letzte Parameter ein Hash ist, sind die geschweiften Klammern optional.

Beispiel:

def foo options 
    # ... 
end 

Dann dies erlaubt ist:

foo :bar => :baz 

Aber wenn Sie:

def foo options, say_hi 
    # ... 
    if say_hi 
    puts 'Hi!' 
    end 
end 

Dann können Sie nicht tun:

foo :bar => :baz, true 

Aber man müßte es nennen mag:

foo({:bar => :baz}, true) 

Ich kann nicht erklären, warum die Klammern in diesem Fall erforderlich sind, aber, aber sie zu sein scheint.