gpt4 book ai didi

ruby - ruby 类中的可继承属性

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:02 25 4
gpt4 key购买 nike

大家好!我想按类描述每一种产品:

# Base product class
class BaseProduct
prop :name, :price # Common properties for all inheritable products
end

class Cellphone < BaseProduct
prop :imei # Concrete property for this product
end

class Auto < BaseProduct
prop :max_speed, :color # Concrete properties for this product
end

c = Cellphone.new
c.prop_names # => [:name, :price, :imei]

a = Auto.new
c.prop_names # => [:name, :price, :max_speed, :color]

那么,如何实现呢?我花了 3 天时间,但没有得到任何工作代码(

最佳答案

编辑:好的,试试这个:

class BaseProduct

class << self
def prop(*names)
attr_accessor *names
local_prop_names.push(*names)
end

def local_prop_names
@local_prop_names ||= []
end

def prop_names
if self == BaseProduct
local_prop_names
else
superclass.prop_names + local_prop_names
end
end
end

def prop_names
class << self; prop_names; end
end
end

class BaseProduct
prop :name
end

class Aero < BaseProduct
prop :tricksy
end

class Heart < Aero
prop :tiger
end

Aero.new.prop_names #=> [:name, :tricksy]
Heart.new.prop_names #=> [:name, :tricksy, :tiger]

关于ruby - ruby 类中的可继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com