2

プライベート メソッドを呼び出すときに、明示的なレシーバーを配置することは受け入れられないと思いました。Ruby 2.0 でこれを実行したところ、結果が得られました。

class Test
  def public_method
    self.set_size=10
  end

  def return_size
    @size
  end

  private

  def set_size=(size)
    @size = size
  end

 end

test = Test.new
test.public_method
p test.return_size

どうしてこれなの?

4

2 に答える 2

2

プライベート セッターは、 の明示的なレシーバーで呼び出すことができselfます。実際には、明示的なレシーバーで呼び出す必要があります。そうしないと、まったく呼び出すことができないためです。

foo = bar

メソッド呼び出しではなく、ローカル変数への代入です。

于 2013-11-15T02:54:42.000 に答える