Was bedeutet "shadowing" bedeutet in Ruby?
Wenn ich den folgenden Code mit Warnungen aktiviert unter Ruby 1.9:
$VERBOSE = true
x = 42
5.times{|x| puts x}
Bekomme ich
warning: shadowing outer local variable - x
Vermutlich ist es zu tun mit der Verwendung von x als block-parameter sowie eine variable außerhalb des Blocks, aber was bedeutet "shadowing" bedeutet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Shadowing ist, wenn Sie zwei verschiedene lokale Variablen mit dem gleichen Namen. Es wird gesagt, dass die definierten Variablen in den inneren Rahmen "Schatten" der in dem äußeren Umfang (denn die äußeren Variablen ist nun nicht mehr zugänglich, solange die innere variable in Reichweite, obwohl es ansonsten in scope).
Also in deinem Fall, Sie können nicht auf das äußere
x
variable in deinem block, denn Sie haben eine innere variable mit dem gleichen Namen.Shadowing ist der allgemeinere Begriff, er gilt außerhalb der Ruby-Welt zu. Abschattung bedeutet, dass der name, den Sie verwenden, in einem äußeren scope -
x = 42
wird "beschattet" von lokalen, deshalb macht es nicht zugänglich und unübersichtlich.