[前][次][番号順一覧][スレッド一覧][生データ]

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       ]