yarv-dev:1086
From: SASADA Koichi <ko1 atdot.net>
Date: Fri, 18 Aug 2006 21:13:36 +0900
Subject: [yarv-dev:1086] Re: open> private setter
ささだです.
setter だから,というわけで特別扱いするのはどうなのかな,と思うのです
が,self.foo のような,レシーバが self のものは,private な呼び出しとい
う扱いにするのはどうでしょうか.
class C
def foo
self.bar
end
private
def bar
p :ok
end
end
C.new.foo
こんなのとか.
それとも,setter だけは self がレシーバなら private でも呼び出しを許す?
sheepman wrote:
> こんばんは、sheepman です。
>
> private な setter の振る舞いが ruby-1.8 や ruby-1.9 と
> 違うようです。
>
> $ cat t.rb
> class C
> private
> def hoge=(a)
> end
>
> public
> def foo
> self.hoge = 1
> end
> end
>
> p C.new.foo
>
> $ ruby-2.0 -v t.rb
> ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [i686-linux]
> YARVCore 0.4.1 Rev: 525 (2006-07-18) [opts: [direct threaded code] [inline method cache] ]
> t.rb:8:in `foo': private method `hoge=' called for #<C:0x40295f00> (NoMethodError)
> from t.rb:12:in `<main>'
>
> $ ruby-1.9 -v t.rb
> ruby 1.9.0 (2006-07-19) [i686-linux]
> 1
>
> $ ruby-1.8 -v t.rb
> ruby 1.8.4 (2006-05-18) [i686-linux]
> 1
>
--
// SASADA Koichi at atdot dot net
--
ML: yarv-dev quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml
1063 2006-07-21 00:05 [sheepman sheepman.sa] open> private setter -> 1086 2006-08-18 21:13 ┗[ko1 atdot.net ]