Ich frage mich, warum ist a
sichtbar?Lokale Variablen in if-Anweisung
if true
puts 'true'
else
puts 'false'
a = 123
end
puts a # no error
# or
# my_hash = {key: a}
# puts my_hash # :key => nil
Aber dies führt zu einem Fehler, obwohl es wird ‚true‘
if true
puts 'true'
else
puts 'false'
a = 123
end
puts a2 # boooooom
Siehe akzeptierte Antwort auf [diese Frage] (http://stackoverflow.com/questions/12928050/why-does-ruby-seem-to-hoist-vary-declarations-from-inside-a-case-statement- e? rq = 1 #) –