为什么Ruby不允许我将self指定为私有方法中的接收者?

问题描述 投票:4回答:4

Ruby是一种面向对象的语言。这意味着无论我发送什么消息,我都严格按照类的某个对象/实例发送它。

示例:

 class Test
   def test1
    puts "I am in test1. A public method"
    self.test2
   end

   def test2
    puts "I am in test2. A public Method"
   end
 end

我在test2对象上调用方法self很有道理>>

但是我不能这样做

  class Test
   def test1
    puts "I am in test1. A public method"
    self.test2 # Don't work
    test2 # works. (where is the object that I am calling this method on?)
   end

   private
   def test2
    puts "I am in test2. A private Method"
   end
 end

[当test2public method时,我可以在self上调用它(很公平,这是一种发送给self对象的方法)。但是当test2private method时,我无法自行调用。那么我要发送方法的对象在哪里?

Ruby是一种面向对象的语言。这意味着无论我发送什么消息,我都严格按照类的某些对象/实例发送它。示例:类Test def test1将“我在test1中。A...

ruby private public
4个回答
11
投票

问题


5
投票

我要在其上发送方法的对象在哪里


2
投票

[self表示您所在的对象的当前实例。


0
投票

[在Ruby 2.7中已更改(2019年12月):self.foo()现在对私有方法foo也有效。

© www.soinside.com 2019 - 2024. All rights reserved.