Ruby - Наследование структур и именованных параметров

Этот вопрос строго касается поведения Struct, поэтому, пожалуйста, не спрашивайте «почему в большом мире спорта вы делаете это таким образом?»

Этот код НЕПРАВИЛЬНЫЙ, но он должен проиллюстрировать то, что я пытаюсь понять о структурах Ruby:

class Person < Struct.new(:name, :last_name)
end

class ReligiousPerson < Person(:religion)
end

class PoliticalPerson < Person(:political_affiliation)
end

### Main ###

person = Person.new('jackie', 'jack')
pious_person = ReligiousPerson.new('billy', 'bill', 'Zoroastrianism')
political_person = PoliticalPerson.new('frankie', 'frank', 'Connecticut for Lieberman')

Как вы можете видеть, это попытка определить наследование классов с помощью структур. Однако Ruby, конечно, раздражается, когда вы пытаетесь инициализировать ReligiousPerson или PolitPerson. Итак, учитывая этот иллюстративный код, как можно наследовать именованные параметры, используя этот тип наследования классов с помощью структур?

14
задан keruilin 31 July 2011 в 17:59
поделиться