使用Ruby语言创建类别和子类别

使用Ruby语言创建类别和子类别,ruby,recursion,Ruby,Recursion,我一整天都在试图解决这个问题,但没有任何解决办法,你能帮我吗? 以下是问题描述: 程序应该能够显示给定时间内的面包屑轨迹 类别/子类别。 前任: 投入:公共关系 产出:商业与金融>>广告与营销>>公共关系 在这里,商业和金融是主要类别,广告和营销是其子类别,公共关系是广告和营销的子类别 我考虑过使用递归实现它,但我不太确定如何实现它 谢谢, Jimmy假设它是纯Ruby,您可以这样做: class Category def initialize name, parent = nil

我一整天都在试图解决这个问题,但没有任何解决办法,你能帮我吗? 以下是问题描述: 程序应该能够显示给定时间内的面包屑轨迹 类别/子类别。 前任: 投入:公共关系 产出:商业与金融>>广告与营销>>公共关系

在这里,商业和金融是主要类别,广告和营销是其子类别,公共关系是广告和营销的子类别

我考虑过使用递归实现它,但我不太确定如何实现它

谢谢,
Jimmy

假设它是纯Ruby,您可以这样做:

class Category
  def initialize name, parent = nil
    @name = name 
    @parent = parent
  end

  def display
    @parent ? "#{@parent.display} >> #{@name}" : name
  end

  def name
    @name
  end
end
像这样使用它

1.9.2p320 :046 > c = Category.new "Parent"
 => #<Category:0x000001009c46d0 @name="Parent", @parent=nil> 
1.9.2p320 :047 > sub = Category.new "Sub", c
 => #<Category:0x000001009bf860 @name="Sub", @parent=#<Category:0x000001009c46d0 @name="Parent", @parent=nil>> 
1.9.2p320 :048 > sub.display
 => "Parent >> Sub" 
1.9.2p320:046>c=Category.new“父级”
=> # 
1.9.2p320:047>sub=Category.new“sub”,c
=> # 
1.9.2p320:048>子显示
=>“父级>>子”

这是activerecord型号吗?只需使用一个parent_id字段。不,它只能在纯ruby中完成。。谢谢,非常感谢froderik,我认为它使用递归,但我认为你的方法看起来更好。实际上它是递归的。:-)但也许不是你想象的那样!