如何使用添加的方法创建修改对象的实例?

问题描述

我试图将方法动态添加到类的单个实例中,然后能够实例化该修改后的类的新对象。

下面是我要完成的工作的草图。

class A
  def add_new_method
     define_singleton_method(:new_method) { puts("hi") }
  end
end

a = A.new
a.add_new_method
B = a.singleton_class
b = B.new

显然,使用这些方法进行上述操作是相当不可能的,因为您显然不应该创建新的单例实例。什么是实现相同目标的正确方法?

解决方法

您无法在Ruby中实例化单例类,但可以编写一些代码来获得自己正在做的感觉。

我将使用一个类方法作为以下示例

class A
  def add_new_method
     define_singleton_method(:new_method) { puts("hi") }
     self
  end

  def self.Enhanced
    new.add_new_method
  end
end

b = A.Enhanced
b.new_method
# hi

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...