存在一个基于this snippet的问题。作者对此有以下评论:
只要从病毒码文件中读取的规则与我们尝试复数的词不匹配,此读取,构建和缓存过程就会继续。如果确实在文件末尾找到匹配的规则,则只需使用它并停止,文件仍处于打开状态即可。文件指针将停留在我们停止读取的任何位置,等待下一个readline()命令。同时,缓存现在有更多的项目,如果我们从头开始尝试对一个新单词进行复数处理,则在从模式文件读取下一行之前,将尝试缓存中的每个项目。
我在上面引用的文本中没有看到任何以粗体显示的实现。尝试每个缓存项的精确度如何?
在每个对象调用中清除self.cache是否正确?
最佳答案
在plural
函数中:
for matches_rule, apply_rule in rules:
if matches_rule(noun):
LazyRules
类的每个新实例(例如rules = LazyRules()
)都以其自己的空缓存(self.cache = []
下的__init__
)开始。第一次之后,每次在该对象(for ... in rules
)上进行迭代时,它都可以使用该缓存。关于python - 学习迭代器(深入Python3),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54532857/