我想编写以下逻辑结构:
category name description fields field name description
我正在使用液滴。如果我有:
class FieldDrop < liquid::Drop
def initialize(field)
@field = field
end
def name
@field.name
end
def description
@field.description
end
end
然后如何让CategoryDrop类在其def fields
方法中引用FieldDrop?
我的结构是:
Category = Struct.new(:name, :description, :fields)
基于CategoryDrop
def fields
@category.fields
end
我希望def fields
扩展到每个字段的@ field.name +''+ @ field.description。
答案 0 :(得分:1)
根据您的问题的命名和说明,听起来您想要Struct
中的Struct
的集合或列表,而不仅仅是Struct
中的Struct
}}
定义Category
结构:
Struct.new('Category', :name, :description, :fields)
=> Struct::Category
定义Field
结构:
Struct.new('Field', :name, :description)
=> Struct::Field
创建Category
实例时,它可以有fields
成员的数组,该数组最初可能为空:
@category = Struct::Category.new('Foo', 'This is a foo', Array.new)
=> #<struct Struct::Category name="Foo", description="This is a foo", fields=[]>
然后将一些字段添加到@category
:
@category.fields << [ 'Field 1', "This is field 1" ]
@category.fields << [ 'Field 2', 'This is field 2' ]
...
然后您的字段显示方法可能如下所示:
def fields
@category.fields.each { |f| puts f.name + ' ' + f.description }
end
或者你想对这些领域做什么。