我正在编写一个与 C 库的 Ruby 绑定(bind)。我想删除 new
我的一些类中的方法 - 我正在使用其他类方法创建对象,例如 create
和load
以及 new
的默认实现只是给我留下了一个无效的指针(类的对象只是指向不透明结构的指针)。
我已阅读 this但是
class Test
end
class <<Test
remove_method :new
end
刚给我
block 引用>NameError: method `new' not defined in Class
无论如何,我想从 C 语言做到这一点(并避免
rb_eval_string
)。
最佳答案
new
方法做了 3 件事:
- 它调用
分配
- 它调用
初始化
- 它返回新对象(并忽略初始化的返回值)。
我认为您无法成功删除它。然而,将 new
设为私有(private)是可以的:
class X
def initialize(a,b)
@a=a
@b=b
end
private_class_method :new
def X.create(x,y)
new(x,y)
end
end
关于c - Ruby C API - 如何删除类方法(特别是新方法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409954/