Ruby-Variablenzuweisung in einem bedingten "if" -Modifikator

Ich habe eine Frage dazu, wie der Ruby-Interpreter Variablen zuweist:

Ich benutze das ziemlich oft:

return foo if (foo = bar.some_method)

Dabei gibt some_method ein Objekt oder nil zurück.

Wenn ich das versuche:

return foo if (true && (foo = bar.some_method))

Ich erhalte: NameError: undefinierte lokale Variable oder Methode foo für main: Object.

Was ist der Unterschied in der Auswertung zwischen der ersten und der zweiten Zeile, der einen Fehler in der zweiten Zeile verursacht?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage