10

Vehicle私はそのようなモジュールを定義しました

module Vehicle
  class <<self
    def build
    end

    private

    def background
    end
  end
end

Vehicle.singleton_methodsreturnへの呼び出し[:build]

によって定義されたすべてのプライベート シングルトン メソッドを調べるにはどうすればよいVehicleですか?

4

1 に答える 1

10

Ruby 1.9以降では、次のことを簡単に行うことができます。

Vehicle.singleton_class.private_instance_methods(false)
#=> [:background]

Ruby 1.8では、物事はもう少し複雑です。

Vehicle.private_methods
#=> [:background, :included, :extended, :method_added, :method_removed, ...]

すべてのプライベートメソッドを返します。あなたはすることによって外部で宣言されたもののほとんどをフィルタリングすることができます

Vehicle.private_methods - Module.private_methods
#=> [:background, :append_features, :extend_object, :module_function]

しかし、それですべてがうまくいくわけではありません。そのためのモジュールを作成する必要があります

Vehicle.private_methods - Module.new.private_methods
#=> [:background]

この最後のものには、それを捨てるためだけにモジュールを作成するという不幸な要件があります。

于 2012-08-27T03:07:21.490 に答える