- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
有没有一种方法可以在不创建对象的情况下检查对象是否具有单例类?
Check if an object has a singleton class 中所述的除外,并非每个对象都有一个单例类(参见 https://repl.it/DuVJ/2 下的证明)。
我想到了以下方法,但行不通:
obj.singleton_class
如果不存在,这会自动创建一个新的单例类(参见 https://ruby-doc.org/core-1.9.2/Object.html#method-i-singleton_class ).
使用对象空间
:
has_singleton_class = ObjectSpace.each_object(Class).any? do |klass|
klass < self.class && klass.singleton_class? && self.is_a?(klass)
end
这很慢,在 jRuby 下可能无法工作,因为 ObjectSpace
可能不会有空。
obj.singleton_methods
只有在单例类至少有一种方法。
最佳答案
您可以使用ancestors
方法。因为你想检查一个类(而不是一个对象)是否是单例,你可以获取类中混合的所有模块并验证其中是否有任何一个是单例类。
class Klass
include Singleton
end
Klass.ancestors.include? Singleton # true
在 ruby 中,为了创建单例,您应该包含一个 Singleton
模块。因此,如果您检查该模块,则意味着该类是单例。 Ruby 的模块类的基类继承意味着您可以使用 ancestors
方法。
引用资料:
关于ruby - 如何在不创建对象的情况下检查对象是否具有单例类(eigenclass),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002927/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!