如何在课程中获得所有自定义方法?

Nap*_*eon 1 ruby methods

module Test
  class A
    def hi
      p 'hi'
    end

    def bye
      p 'bye'
    end

    puts methods.sort
    p '---------'
    puts methods.sort - Object.methods
  end
end
Run Code Online (Sandbox Code Playgroud)

第二个puts不打印任何东西,第一个不打印'hi'和'bye'.为什么?

Ser*_*sev 5

因为两个线在的范围内被执行A类本身,而hibye实例方法那类.试试这个:

module Test
  class A
    def hi
      p 'hi'
    end

    def bye
      p 'bye'
    end

    puts instance_methods(false)
  end
end

# >> hi
# >> bye
Run Code Online (Sandbox Code Playgroud)

当你传递falseinstance_methods你时,你指示它不包括超类的方法.