检查法警方法

时间:2018-12-06 03:38:50

标签: ruby

Marshal.dump无法转储包含单例(本征类)的类。我想看看该方法如何确定此单例的存在,但我不知道如何找到源。我确实尝试了以下方法:

dump_method = Marshal.method(:dump) #=> #<Method: Marshal.dump> 
dump_method.source_location # => nil

我也快速浏览了https://github.com/ruby/ruby,但是由于没有搜索功能,我不知道在哪里可以找到元帅的来源。

1 个答案:

答案 0 :(得分:3)

检查是here,但是它是C语言-MRI代码非常不透明。

我相信与此类似的支票,但在Ruby中将是:

obj.singleton_class.instance_methods(false).empty? &&
obj.singleton_class.instance_variables.empty?

如果这是false(即,如果在单例中定义了任何内容),那么您就没有转储。