From: matz@... (Yukihiro Matsumoto) Date: 1998-11-24T12:58:41+09:00 Subject: [ruby-dev:3651] Re: block local variable (Re: スコープの範囲) まつもと ゆきひろです In message "[ruby-dev:3642] Re: block local variable (Re: スコープの範囲)" on 98/11/23, Koji Arai writes: |新井です。 |#!/usr/local/bin/ruby | |$assign = %Q{v = 2; p v} | |eval $assign # => 2 局所化されてる |p v if defined?(v) # => | |v = 1 # eval より前に定義 |p v # => 1 |eval $assign # => 2 局所化されない |p v # => 2 eval によって値が壊される |__END__ | |ということから、evalの中で局所変数を使うのが難しい。 うーん,evalについては基本は * 引数として渡した文字列があたかもそこにあるかのように動作 する * が,既にコンパイル時に決まってしまった情報を変更すること はない を押えておいて下さい.やや難しいのは * ローカル変数の defined? チェックは静的に行われる 点でしょうか.メソッドなどは定義そのものが動的ですから, defined? のチェックがぜんぶ静的というわけではないというのが ちょっといやらしいですね. まつもと ゆきひろ /:|)