rubyでの上書き関係
次の2つのコードには異なる効果があります.
結果:
PS F:\ror\iStar\SToDoOL> ruby mytest\cl1.rb
foo3
結果:
PS F:\ror\iStar\SToDoOL> ruby mytest\cl1.rb
foo3
このコードはdef foo関数によってattr_reader:foo生成のfooが代わりになったのでinitializeで実行されるのは@foo=@foo
もう一度変更すると:
class T1
attr_reader :foo
@foo = 'foo1'
def foo
return 'foo3'
end
def initialize(foo2)
@foo = foo2
@foo = self.foo
end
end
i1 = T1.new('foo2')
puts i1.foo
結果:
PS F:\ror\iStar\SToDoOL> ruby mytest\cl1.rb
foo3
class T1
def foo
return 'foo3'
end
attr_reader :foo
@foo = 'foo1'
def initialize(foo2)
@foo = foo2
@foo = self.foo
end
end
i1 = T1.new('foo2')
puts i1.foo
結果:
PS F:\ror\iStar\SToDoOL> ruby mytest\cl1.rb
foo3
このコードはdef foo関数によってattr_reader:foo生成のfooが代わりになったのでinitializeで実行されるのは@foo=@foo
もう一度変更すると:
class T1
attr_reader :foo
@foo = 'foo1'
def foo
return @foo+'foo3'
end
def initialize(foo)
@foo = foo
end
end
i1 = T1.new('foo2')
puts i1.foo
:
PS F:\ror\iStar\SToDoOL> ruby mytest\cl1.rb
foo2foo3
, @foo=foo , @foo = foo( ) foo