[#45637] [ruby-trunk - Feature #6440][Open] 引数にIOを渡した場合のMarshal.loadにバッファを持たせたい — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

14 messages 2012/05/16

[#45670] [ruby-trunk - Bug #6479][Open] ipaddr.rbの受け付ける書式が、プラットフォームによって異なる — "kachick (Kenichi Kamiya)" <kachick1+ruby@...>

9 messages 2012/05/22

[ruby-dev:45613] [ruby-trunk - Bug #6396] instance_eval内での変数の扱いについて

From: "nobu (Nobuyoshi Nakada)" <nobu@...>
Date: 2012-05-03 12:09:16 UTC
List: ruby-dev #45613
Issue #6396 has been updated by nobu (Nobuyoshi Nakada).

Description updated

=begin
一度 x への代入が現れれば、そのスコープではそこ以降では x というローカル変数が定義されていることになります。

これは構文解釈時に行われる判断なので、実際に代入されるかどうかは無関係です。

o.x へ代入したいのであれば、
  o.x = 2
か
  self.x = 2
としてください。
=end

----------------------------------------
Bug #6396: instance_eval内での変数の扱いについて
https://bugs.ruby-lang.org/issues/6396#change-26424

Author: uy (西行寺 うゆ)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]


=begin
  class O
    attr_accessor :x
  end
  o = O.new

  o.x = 99

  o.instance_eval do
    p x #=> 99
    if nil
      x = 2 # この記述があるとxがnilになる
    end
    p x #=> nil
  end

これはバグでしょうか?


  o.instance_eval do
    p x #=> 99
    p x += 1
  end
((|x|))は値を見ることは出来ても、
値を変更しようとしたり、
(({if}))分岐を通らなくても、そういったコードを混ぜておくと
((|x|))が(({nil}))(新しい変数?)に置き換わっているようですが
=end



-- 
http://bugs.ruby-lang.org/

In This Thread