zufällig Einiges Ergebnisse: [nur in Ruby 2.3.0p0]
Das Verfahren scheint nicht zu existieren:
nil.method(:[]=) #=> NameError: undefined method `[]='
nil.respond_to?(:[]=) #=> false
Und Sie es send
mit nicht aufrufen können:
nil.send(:[]=) #=> NoMethodError: undefined method `[]='
Rubin wertet weder die rechte Seite, noch das Argument,
dh
nil[foo]=bar
erhebt keine NameError
, obwohl foo
und bar
sind nicht definiert.
Der Ausdruck scheint entspricht nil
zu sein:
$ ruby --dump=insns -e 'nil[foo]=bar'
== disasm: #<ISeq:<main>@-e>============================================
0000 trace 1 ( 1)
0002 putnil
0003 leave
$ ruby --dump=insns -e 'nil'
== disasm: #<ISeq:<main>@-e>============================================
0000 trace 1 ( 1)
0002 putnil
0003 leave
nicht zum Ruby 2.2.4 reproduzieren kann. Vielleicht eine neue Funktion oder ein Fehler in Ihrer Version? –
Seltsam ... Vielleicht ist es ein Fehler. –
Ich kann das nur in Ruby 2.3.0 reproduzieren und ich gehe davon aus, dass es ein Bug ist. Es könnte sich lohnen, den [Bug Tracker für dieses Problem] (https://bugs.ruby-lang.org) zu überprüfen. – tadman