我刚开始学习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)//伪代码
答案 0 :(得分:0)
您实际上无法从构造函数返回任何内容。
或者你可以存储传入的迭代器,然后实现类似这样的函数:
def each()
@each.select { |student| student.GPA > 2.7 }.each do |record|
yield record
end
end