@hoge は、インスタンス変数 @hoge を参照します。
self.hoge は、インスタンスメソッド hoge を呼び出します。
self.hoge = は、インスタンスメソッド hoge= を呼び出します。
attr_accessor で hogeとhoge=を定義しておけば、self.hogeとself.hoge=を呼び出せます。
class Clazz
attr_accessor :hoge
def initialize(arg)
@hoge = arg
end
def func
puts self.hoge
end
end
obj = Clazz.new 'instance var.'
obj.func #-> instance var.
メソッドが定義されていなければ、当然呼び出せません。
class Clazz
def initialize(arg)
@hoge = arg
end
def func
puts self.hoge #-> undefined method `hoge' 発生
end
end
obj = Clazz.new 'instance var.'
obj.func
paiza.ioでコードを公開しました。
ソースをいじりながら確認したい方はどうぞ。