以下のRubyのコードが,意図した動作をしないのはなぜですか。(制限時間1分) やりたい事: 画面に「1」と表示する。 # aに1を代入する eval "a = 1" # aを呼び出す p a 発生する問題 実行すると下記のエラーになる。 undefined local variable or method `a' for main:Object (NameError) そんな馬鹿な,と思うだろう。 だって,Rubyはスクリプト言語じゃないか。 コンパイルが不要で,動的に実行されるはず。 1行目が実行された後で,2行目が読み取られてゆくのでは? 1行目で変数が宣言されれば,2行目でその変数を利用できるのでは・・・? と思うかもしれない。 だが,残念ながら,その認識は少々間違っている。 原因 Rubyは確かに動的で柔軟なスクリプト言語だ。しかし, Rubyは,最初にスクリプト全体をコンパイル
![Rubyの動かないコード (中級編) ローカル変数の「暗黙の初期化」に関するエラー(ローカル変数のスコープが事前コンパイルで決まる) - 主に言語とシステム開発に関して](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)