3

この質問を読みましたが、これは答えません。「python -i」に相当するルビーはありますか?

私のスクリプトが

#!/usr/bin/ruby

hello = "Hello World"

を使用するirb -r main.rbと、

1.8.7 :001 > puts hello
NameError: undefined local variable or method `hello' for #<Object:0x7fb1486f4298>
        from (irb):1
1.8.7 :002 > 

hello がグローバルとして定義されている場合にのみ機能します。したがって、実際には「python -i」と同等ではありません。

それで、正確に同等のものは何ですか?

4

2 に答える 2

5

Kernel#load のドキュメントによると、

いかなる状況においても、ロードされたファイル内のローカル変数がロード環境に伝播されることはありません。

グローバルや定数が気に入らない場合は、次のようなモジュールでデータをラップするのが 1 つの方法です。main.rb:

module Wtf
  @hello= "world"
  def self.hello; @hello end
end

$ irb -r main.rb

> こんにちは。

>「世界」

于 2012-12-25T11:55:10.140 に答える