zoukankan      html  css  js  c++  java
  • Lua应用——tables应用,查找是否为保留字

    Lua中的table功能确实强大。因为table是Lua中的唯一数据结构。今天有点晕,少说两句多拷贝代码吧。

    实例:

      假定你想列出在一段源代码中出现的所有标示符,某种程度上,你需要过滤掉那些语言本身的保留字。一些C程序员喜欢用一个字符串数组来表示,将所有的保留字放在数组中,对每一个标示符到这个数组中查找看是否为保留字,有时候为了提高查询效率,对数组存储的时候使用二分查找或者hash算法
      Lua中表示这个集合有一个简单有效的方法,将所有集合中的元素作为下标存放在一个table里,下面不需要查找table,只需要测试看对于给定的元素,表的对应下标的元素值是否为nil。比如:

    reserved = {
      ["while"] = true, ["end"] = true,
      ["function"] = true, ["local"] = true,
    }
    for w in allwords() do
      if reserved[w] then
      -- `w' is a reserved word
    ...

    还可以使用辅助函数更加清晰的构造集合:

    function Set (list)
      local set = {}
      for _, l in ipairs(list) do set[l] = true end
      return set
    end
    reserved = Set{"while", "end", "function", "local", }

    恩,这种方式,用的地方不少哦

  • 相关阅读:
    node的function函数和路由代码的小例子
    关于node回调函数中同步和异步操作的理解
    node初学
    CTF知识点总结(二)
    知识图谱
    论文笔记 无监督与混合IDS
    CTF知识点总结(一)
    论文笔记 网络安全图谱以及溯源算法
    攻防世界 wtf.sh-150
    攻防世界 Web_php_wrong_nginx_config
  • 原文地址:https://www.cnblogs.com/slysky/p/5416419.html
Copyright © 2011-2022 走看看