【问题标题】:Who is the caller of a private Rails method?谁是私有 Rails 方法的调用者?
【发布时间】:2017-05-26 03:24:43
【问题描述】:

call_say_koan 方法中的调用者是谁?是Koanself 的类还是Koan 的实例?

class Koan
  def call_say_koan
    say_koan
  end

  private
    def say_koan
      puts "What is the sound of one hand clapping?"
    end
end

【问题讨论】:

  • 调用者是call_say_koan,使用“调用者”的标准定义,除非您已经严重重新定义了“调用者”一词的含义,在这种情况下您应该提供您的定义。

标签: ruby-on-rails ruby private


【解决方案1】:

牦牛剃须多长时间?

你的自行车棚是什么颜色的?

啊,年轻的学徒,答案是不言自明的。

向所有人展示的东西可能被任何人调用。

对所有人都隐藏的东西只能被自己调用。

say_koan 的调用者是谁?

它是名为 self 的 Koan 实例。

你的降落伞是什么颜色的?

【讨论】:

  • 不,它必须是self,而不是任何实例。合十礼。
  • 当你说Koan.new.say_koan时,你不是 Koan 的实例。你是卡里。而且你不是新公案。所以,你不能打电话给say_koan。也许你可以说say_cary。但这不是我们要知道的。因为对你来说私人的东西对你来说也是私人的。
  • 我不知何故错过了从公共方法调用私有方法,但self 在两种方法中当然是相同的,即类的实例。
  • 不只是任何实例。 selfselfotherother。只有实例self可以调用say_koan
  • Koan.new.say_koan 不是新科安怎么办?
【解决方案2】:

据我所知,类的方法是用前缀'self.'定义的,而其他所有方法都是实例方法。所以,调用者是 Koan 的一个实例。

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2017-03-25
    • 2013-11-26
    • 2010-11-25
    • 1970-01-01
    • 2018-05-03
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多