将Perl的文件输入角度运算符作为通用迭代器/生成器进行重载是否合适?

Rya*_*son 3 syntax perl iterator generator

我已经看到了几个模块(例如:Iterator :: Simple),它们使用Perl的角度运算符作为Python生成器的近似等价物.具体来说,提供迭代值列表而不实际将整个列表加载到内存中的能力.这通常被认为是运营商功能的适当扩展,还是被认为是滥用它?

Eri*_*rom 7

<HANDLE>运营商只是为语法糖readline HANDLE的功能,这是非常在手柄上的迭代器.如果一个对象提供迭代访问,我没有看到任何重载问题,<>以便为最终用户提供灵活性.

<>运营商不近似发电机,模块做到这一点.这一切

while (<$iterator>) {...}
Run Code Online (Sandbox Code Playgroud)

给你一种奇特的写作方式

while (defined ($_ = $iterator->next)) {...}
Run Code Online (Sandbox Code Playgroud)

Perl是一种非常富有表现力的语言,因为它可以通过许多不同的方式解决问题.许多模块选择以这种精神提供替代接口.这允许用户编写最适合他们的方式.