C语言 有没有一种方法可以让类变量像虚变量一样具有setter/getter?

smdncfj3  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(122)

我将Ruby嵌入到我的C项目中,并希望加载几个文件,这些文件定义了一个从我自己的父类继承的类。每个继承的类都需要在初始化时设置一些变量,我不希望Ruby和C有两个不同的变量。
有没有一种方法可以定义一个拥有自定义setter/getter的类变量,或者这是一种愚蠢的处理方法?也许使用自定义数据类型会更好?

jogvjijk

jogvjijk1#

我不知道你到底在问什么。当然,类变量可以有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

相关问题