我使用Moose
(具体MooseX::Declare
)来创建一个迭代器对象,Iter
具有next
方法,该方法前进状态,并根据需要用于在while
语句中使用返回0
或1
。我遇到的问题是,根据其中一个构造参数的存在,next
需要执行两组完全不同的操作。我看到它的方式我有五个选项:使用Moose时,施工时指定方法体的最佳方式是什么?
- 如果...那么
next
方法 - 子
- 散列调度
- 符号表操纵 在不同的模块和负载
- put方法需要一个在施工时间
只是业余爱好者。
编号2是,我想,是适当的面向对象方式的做事。我没有反对这样做,但似乎有点矫枉过正,只是重写一个单一的方法。
我经常在过程中使用编号3时,它在程序上或伪功能上工作,而这正是我现在所做的。
编号4正如我们都知道的那样,充满了危险,而且我对穆斯胆量在不必要的时候开始乱搞时一无所知。
最后一个项目,编号5在我看来,似乎是最明智的(和Perlish),但像2号,是一个有点太多的工作。我真的很想知道是否还有第五种方法我没有考虑过,比如挂钩元类或者相当成熟的MooseX
模块。
你可能想进一步解释什么不同的行动是迭代器应该执行。不知道完整的用例很难给出设计建议。 – phaylon 2010-12-14 18:52:02
嗯,我真的在寻找一个最佳实践而不是实现细节。我工作得很好,但是哈希调度真的希望我想在'穆斯'范式内做?也就是说,做这件事的'Moosy'方法是什么? – gvkv 2010-12-14 19:01:19