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?