Zuweisung nicht existierender Objekte

28/02/2012 - 23:33 von Oliver Sch | Report spam
Heyho,

weil ich neulich in einem Vortrag darauf gestoßen bin und ich nicht darauf
komme, warum das so ist:

warum ergibt, wenn Objekt mit Namen "a" nicht definiert wurde, der
Ausdruck

a = a

ein nil?

a = b dagegen ergibt:
NameError: undefined local variable or method `b' for main:Object
from (irb):1
from :0

Ich hàtte in beiden Fàllen das gleiche Verhalten erwartet, da wie gesagt a
nicht vorher definiert wurde, genau wie b.

Tritt mit Ruby 1.8.7 und 1.9.2 so auf, ein Interpreter-Bug hàtte da ja
schon absichtlich portiert werden müssen.

mfg
Oli

Man darf ruhig intelligent sein, man muss sich nur zu helfen wissen
 

Lesen sie die antworten

#1 Robert Klemme
29/02/2012 - 08:37 | Warnen spam
On 28.02.2012 23:33, Oliver wrote:
Heyho,

weil ich neulich in einem Vortrag darauf gestoßen bin und ich nicht darauf
komme, warum das so ist:

warum ergibt, wenn Objekt mit Namen "a" nicht definiert wurde, der
Ausdruck

a = a

ein nil?

a = b dagegen ergibt:
NameError: undefined local variable or method `b' for main:Object
from (irb):1
from :0

Ich hàtte in beiden Fàllen das gleiche Verhalten erwartet, da wie gesagt a
nicht vorher definiert wurde, genau wie b.

Tritt mit Ruby 1.8.7 und 1.9.2 so auf, ein Interpreter-Bug hàtte da ja
schon absichtlich portiert werden müssen.



Ich denke, das ist ein Corner-Case: weil das Statement eine Zuweisung zu
a enthàlt, ist a ab diesem Statement definiert. Vermutlich hat man sich
die Mühe gespart, diesen Fall separat zu prüfen.

Ciao

robert

remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Ähnliche fragen