当前位置:  开发笔记 > 后端 > 正文

有没有办法让类变量与setter/getter一样的虚拟变量?

如何解决《有没有办法让类变量与setter/getter一样的虚拟变量?》经验,为你挑选了1个好方法。

我将Ruby嵌入到我的C项目中,并希望加载几个定义从我自己的父类继承的类的文件.每个继承的类都需要在初始化时设置一些变量,我不希望Ruby和C有两个不同的变量.

有没有办法定义一个具有自己的自定义setter/getter的类变量,或者这是一种处理它的愚蠢方法?使用自定义数据类型可能会更好吗?



1> Ian Terrell..:

我不确定你究竟在问什么.当然类变量可以有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

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有