yarv-dev:1065
From: "Ken Date" <itacchi gmail.com>
Date: Sun, 23 Jul 2006 01:11:17 +0900
Subject: [yarv-dev:1065] open>value of expression "foo.foo=val" is not r-value
伊達です。
foo=(val) 形式のメソッドを使って代入をした時に、式の値が右辺値ではなくメソッドの戻り値になります。
$ ruby-yarv -v -e '
class Foo
def foo=(val)
nil
end
end
p Foo.new.foo=1
'
ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [i686-linux]
YARVCore 0.4.1 Rev: 527 (2006-07-19) [opts: [direct threaded code]
[inline method cache] ]
nil
$ ruby18 -v -e '
class Foo
def foo=(val)
nil
end
end
p Foo.new.foo=1
'
ruby 1.8.4 (2005-12-24) [i686-linux]
1
$ ruby19 -v -e '
class Foo
def foo=(val)
nil
end
end
p Foo.new.foo=1
'
ruby 1.9.0 (2006-07-21) [i686-linux]
1
attr_writer を使った場合には右辺値になります。
$ ruby-yarv -v -e '
class Foo
attr_writer :foo
end
p Foo.new.foo=1
'
ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [i686-linux]
YARVCore 0.4.1 Rev: 527 (2006-07-19) [opts: [direct threaded code]
[inline method cache] ]
1
--
ML: yarv-dev quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml
-> 1065 2006-07-23 01:11 [itacchi gmail.com ] open>value of expression "foo.foo=val" is not r-value 1085 2006-08-18 02:25 ┗[ko1 atdot.net ] fixed> Re: open>value of expression "foo.foo=val" is not r-value