lua中迭代器问题

  local unks = {'<unk>', '<UNK>', 'UUUNKKK'}
  for _, tok in pairs(unks) do
    self.unk_index = self.unk_index or self._index[tok]

我查了一下pairs是table元素的迭代器,想请问一下为什么不直接写成for _, tok in unks do,而要写成pairs()的形式,两者有什么区别吗?能解释一下吗?我记得python中好像也不用加pairs()这种函数吧。

阅读 3k
3 个回答

python也能写成这样,如果不用函数那就要在语言层面(这里应该是对象的属性之类的地方)加一下约定和支持,lua设计是小巧精悍,连这一点负担都是不肯加的

Python 给你语法加糖 lua 没有这样的糖罢了....

pairs可以理解是lua提供的一个默认迭代器,类似的还有ipairs,不直接写成for _, tok in unks do形式的一个好处就是,你可以根据需要的迭代方式,选择使用不同的迭代器,甚至可以自己实现一个,满足了不同的迭代需求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题