Warum wirken sich Klammern auf Hashes aus?

8

Als ich respond_with verwendet und einen Literal-Hash übergeben habe, gab es den Fehler:

%Vor%

Wenn ich jedoch den Literal-Hash wie folgt umklammert habe:

%Vor%

Die Funktion läuft ohne Probleme. Warum machen die Klammern einen Unterschied? Ist ein Hash kein eingeschlossener Anruf?

    
RileyE 05.03.2013, 22:05
quelle

1 Antwort

12

Beim Aufrufen einer Methode wird die öffnende geschweifte Klammer direkt nach dem Methodennamen als Anfang eines Blocks interpretiert. Dies hat Vorrang vor der Interpretation als Hash. Eine Möglichkeit, das Problem zu umgehen, besteht darin, Klammern zu verwenden, um die Interpretation als Methodenargument zu erzwingen. Beachten Sie als Beispiel den Unterschied in der Bedeutung dieser beiden Methodenaufrufe:

%Vor%

Eine andere Möglichkeit besteht darin, die geschweiften Klammern zu entfernen, da Sie immer die Klammern des letzten Arguments einer Methode überspringen können. Ruby ist "clever" genug, um alles, was wie eine Assoziationsliste am Ende einer Argumentliste aussieht, als einen einzelnen Hash zu interpretieren. Bitte schauen Sie sich dieses Beispiel an:

%Vor%     
Holger Just 05.03.2013, 22:13
quelle

Tags und Links