初始化时接收迭代器的类,仅返回某些对象。红宝石

时间:2015-03-02 18:08:06

标签: ruby linked-list iterator subclass each

我刚开始学习ruby几周前正在完成一项任务,而且还有一部分我不清楚。 背景:所以我有学生对象(有学生姓名,GPA,ID)进入节点。然后是那些节点对象所在的双重Linkedlist类。

我想创建一个名为probation_filter(iterator)的类,它在初始化时接收一个迭代器,它应该遍历链表并返回那些在试用期内的学生#34;这意味着gpa小于2.7。

在该类中,如果需要,我可能有相当于Java的hasNext()和next()的方法。

我只是不确定如何解决这个问题。这是我的猜测:所以在我的LinkedList类中,我有迭代方法和reverse_each而不是实际的迭代器对象。

我会这样做:

class OnProbationFilter
    def initialize(iterator)
        @each=iterator
       //condition to filter and return students that have a GPA of less than 2.7
    end
     //other methods that class may need    
end

过滤掉试用期学生的条件是否真的发生在构造函数内?

另外,我如何在链表中调用此方法?我是否会在LinkedList类中包含probation_filter然后执行类似于声明新的Linkedlist probation_list变量,然后调用probation_filter(每个),传入每个并将其存储到新的probation_list中?

LinkedList probation_list = new OnProbationFilter(each)//伪代码

1 个答案:

答案 0 :(得分:0)

您实际上无法从构造函数返回任何内容。

或者你可以存储传入的迭代器,然后实现类似这样的函数:

def each()
  @each.select { |student|  student.GPA > 2.7  }.each do |record|
    yield record
  end
end