如何检查ruby中是否定义了私有方法

时间:2015-11-19 21:23:40

标签: ruby class

我能找到的最接近的是In Ruby, how do I check if method "foo=()" is defined?,但它只有在方法是公开的情况下才有效,即使在类块内也是如此。

我想要的是什么:

Module#private_method_defined?

我尝试过的事情:

class Foo
  def do_stuff_if_bar_is_defined
    if self.class.private_method_defined?(:bar)
      do_stuff
    end
  end

  private

  def bar
    "bar"
  end

  private_method_defined? :bar #=> true
end
Foo.private_method_defined? :bar #=> true

2 个答案:

答案 0 :(得分:27)

另一种方法是使用:respond_to?,例如

self.respond_to?(:bar, true)

请注意,第二个参数在这里很重要 - 它表示:respond_to?应该查找所有范围方法,包括私有方法。

答案 1 :(得分:11)

您想要 childls_pid = fork(); childSort_pid = fork();

fork()