gpt4 book ai didi

ruby - 检查 Marshal 方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:04 25 4
gpt4 key购买 nike

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

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

我也快速浏览了一下https://github.com/ruby/ruby但是,如果没有搜索功能,我不知道在哪里可以找到 Marshal 的源代码。

最佳答案

支票是here ,但它是用 C 语言编写的,而且 MRI 代码非常不透明。

我相信类似的检查,但在 Ruby 中,将是:

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

如果这是 false(即如果在单例上定义了任何东西),则不会为您转储。

关于ruby - 检查 Marshal 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com