名前空間
変数とメソッドは違うらしい
#!/usr/bin/env ruby # -*- coding: utf-8 -*- a=1 def a puts "hello" end p a #=>1 a #=>何もなし a() #=>hello p a.class #=>Fixnum p a().class #=>hello NilClass
と思ったけど,a=1のaはFixnumクラスのオブジェクトなんだな.
一番外で定義するとNilClassのメソッドになるらしい.
そうやって名前空間を区別してるからa=1とdef a ...が区別されるのか.
関数=NilClassのメソッドで,Rubyには関数はない,と言えるかも.
#!/usr/bin/env ruby # -*- coding: utf-8 -*- func=1 def func puts "Hello" end func
これは何が印字されるでしょう,とか.
同じ名前がメソッドとオブジェクトであると,後者が優先されるらしい.