我今天写了我的第一个C#迭代器.哇噢.
有趣的是,它有副作用.我的迭代器从目录中过滤掉无效文件,并返回一系列要处理的有效文件.当它遇到一个invlaid文件时,它会将它移动到另一个目录.
我尝试将其实现为LINQ查询,但实际上并不喜欢where子句的谓词具有副作用的事实.那是一种确定的气味.
我可以明确地实现它,循环遍历所有文件并依次处理好坏,但它不是很优雅.更好的解决方案是将其拆分为两个列表(好的和坏的)并依次处理每个列表.
但后来我想起了迭代器.我现在有一个迭代器,它产生有效的文件并处理(移动)无效的文件.
所以,我的问题是:迭代器有这样的副作用是不是一个坏主意?我是否在迭代器中隐藏了太多功能?