るとです。

トップレベルでの定義はKernelモジュールへのメソッド定義でレシーバーは
main、そしてメソッド呼び出しのときにレシーバーが省略されるとまずself、見
付からなければmainのメソッドを呼ぶと思っていました。
実際には[ruby-list:14044]にあるようにObjectへのメソッド定義でレシーバー
はmain、メソッド呼び出しのときにレシーバーが省略されると単にselfのメソッ
ドが呼ばれるのですね。

クラス定義はソース上での見掛け上トップレベルより内側のスコープに見えます
ので、@Foo=2とした例のように、外側であるトップレベルから内側で定義された
インスタンス変数が見えると動的スコープっぽく見えました。
実際にはリファレンスマニュアルの「クラス定義」にあるように、クラスのネス
トなどの場合も含めてクラス定義式は外側のスコープとは無関係なのですね。
今回のようなトップレベルでインスタンスメソッドを参照する例はあまりやらな
いと思いますが、逆にJAVAのように外の変数が参照できてしまうように思って次
のようなことを良くやってしまいます。
a = 10
class A
  def foo
    a
  end
end
A.new.foo

-- 
ると
takuo / aya.or.jp