2
我正在将Ruby嵌入到我的C项目中,并希望加载几个定义从我自己的父类继承的类的文件。每个继承类需要在初始化时设置一些变量,我不想为Ruby和C有两个不同的变量。有没有办法让类变量与setter/getter类似的虚拟变量?
有没有一种方法来定义一个具有自定义setter/getter的类变量,或者是这个一个愚蠢的方式来处理它?也许用自定义数据类型会更好?
我正在将Ruby嵌入到我的C项目中,并希望加载几个定义从我自己的父类继承的类的文件。每个继承类需要在初始化时设置一些变量,我不想为Ruby和C有两个不同的变量。有没有办法让类变量与setter/getter类似的虚拟变量?
有没有一种方法来定义一个具有自定义setter/getter的类变量,或者是这个一个愚蠢的方式来处理它?也许用自定义数据类型会更好?
我不确定你在问什么。当然,类变量可以有getter和setter(并且你可以以任何方式存储值)。这段代码是否有助于阐明任何事情?
>> class TestClass
>> def self.var
>> @@var ||= nil
>> end
>> def self.var=(value)
>> @@var = value
>> end
>> end
=> nil
>>
?> TestClass::var
=> nil
>> TestClass::var = 5
=> 5
>> TestClass::var
=> 5
如果你到整个元编程的事情,你可以实现类似attr_accessor方法class_attr_accessor方法。以下相当于上面的代码。
class Module
def class_attr_accessor(attribute_name)
class_eval <<-CODE
def self.#{attribute_name}
@@#{attribute_name} ||= nil
end
def self.#{attribute_name}=(value)
@@#{attribute_name} = value
end
CODE
end
end
class TestClass
class_attr_accessor :var
end
将Ruby嵌入到C中意味着什么?我不熟悉Ruby,但如果你澄清了你的问题,我可能会帮助你。 – 2008-09-24 18:04:38
我正在使用Ruby-C-API来集成Ruby并将其用作脚本语言。我的问题是更多的Ruby相关的C;) – unexist 2008-09-24 18:23:59