هل هناك طريقة للحصول على متغيرات فئة مع setter/getter مثل المتغيرات الافتراضية؟
سؤال
أقوم بتضمين Ruby في مشروع C الخاص بي وأريد تحميل العديد من الملفات التي تحدد فئة موروثة من صفي الأصلي.تحتاج كل فئة موروثة إلى تعيين بعض المتغيرات عند التهيئة ولا أريد أن يكون لدي متغيرين مختلفين لـ Ruby وC.
هل هناك طريقة لتحديد متغير فئة يحتوي على أداة ضبط/أداة مخصصة خاصة به أم أن هذه طريقة غبية للتعامل معه؟ربما سيكون من الأفضل مع نوع بيانات مخصص؟
المحلول
لست متأكدًا بالضبط مما تطلبه.بالطبع يمكن أن تحتوي متغيرات الفئة على حروف ومحددات (وخلف الكواليس يمكنك تخزين القيمة بالطريقة التي تريدها).هل يساعد هذا المقتطف في إلقاء الضوء على أي شيء؟
>> 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
إذا كنت مهتمًا بالبرمجة الوصفية بأكملها، فيمكنك تنفيذ طريقة class_attr_accessor المشابهة لـ 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
لا تنتمي إلى StackOverflow