In diesem BeispielIch verstehe nicht, lokalen Bereich rubin
def foo(x)
if(x > 5)
bar = 100
end
puts bar
end
Dann foo (6) Ausgänge: 100 und foo (3) gibt nichts.
Allerdings, wenn ich die Definition
geändertdef foo(x)
if(x > 5)
bar = 100
end
puts bob
end
Ich erhalte eine „nicht definiert lokale Variable oder Methode“ Fehler.
Also meine Frage ist, warum ich diesen Fehler nicht bekomme, wenn ich foo (3) und bar nie gesetzt werde?
Danke, yep Ich habe verstanden, wo der Bob-Fehler einfach nicht sicher war, warum ich keinen Bar-Fehler bekommen habe. Weißt du, ob ich mich auf dieses Verhalten verlassen kann, ist es Teil der Spezifikation? Zum Beispiel, kann ich nach der if-Anweisung bar für nil prüfen oder sollte ich wirklich auch bar = nil vor der if-Anweisung deklarieren? – rebo
Ja, das ist ein zuverlässiges Verhalten. Bar = Nil zu deklarieren wäre sicherlich expliziter. Aber ich weiß nicht, dass die meisten Rubyisten das tun würden. Wenn Sie Ihre Methoden klein halten, sollte es nicht schwer zu verstehen sein, oder wo die Bar herkommt. – Todd