@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でコードを公開しました。
ソースをいじりながら確認したい方はどうぞ。