热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1.lua入门

文章目录

文章目录

    • 数据类型
    • 命令解释器
      • 加载库
      • 环境配置
    • 注释
    • 参考资料


数据类型


  1. lua是动态类型语言,每个值带有自身的类型信息。

  2. 默认情况下,变量总认为是全局的。

  3. 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是nil

  4. 如果想要删除一个全局变量,只需要将它赋值为nil。当且仅当一个变量不等于nil时,这个变量即存在。

  5. 使用type函数来获取一个值对应的类型名词。

  6. 在逻辑判断时,boolean类型的值efalsenil都视为假,其他都视为真。


数据类型描述
nil只有nil属于该类,表示一个无效值(在条件表达式中相当于false)
boolean包含两个值:false和true。
number相当于C语言的double,双精度浮点数
string由一对单引号或双引号表示的字符串
function由C语言或Lua编写的函数
userdata任意存储在变量中的C数据结构
thread表示执行的独立线路,用于协同程序
tabletable其实是一个关联数组,数组的索引可以是数字、字符串或表类型。table的创建是通过构造表达式来完成的,最简单构造表达式是{},用来创建一个空表

nil在做比较时应该加上引号,因为type(x) == nil中,type(x)返回的实际是"nil"字符串,是一个string类型。

type(type(x)) == string

命令解释器


加载库

lua -l 可以在命令交互模式加载一个库。
命令交互模式下,使用dofile("1.lua")可以加载1.lua作为库,使用其中的函数变量等。

环境配置

解释器造处理参数前,会查找名为LUA_INIT_5_3的环境变量(应该是视lua版本来定),如果找不到,就会再查找名为LUA_INIT的环境变量。

如果这两个变量中的任意一个存在,并且其内容为@filename,那么解释器就会运行相应的文件;
如果变量存在但不是以@开头,那么解释器会认为其包含lua的代码,并会对其进行解释执行。

这样的方法可以完整地配置lua。因而LUA_INIT使得我们可以灵活地配置独立解释器。

例如,可以预先加载程序包、修改路径、定义自定义函数、对函数进行重命名或删除函数,等等。

$ lua script a b c

解释器在运行代码前会创建一个名为arg的表,其中存储了所有的命令行参数。索引0中保存的内容为脚本名,索引1位第一个参数:

arg[-3] = "lua"
arg[-2] = "-3"
arg[-1] = "sin=math.sin"
arg[0] = "script"
arg[1] = "a"
arg[2] = "b"

在脚本之前的选项则位于负数索引上。

lua支持变长参数,在脚本文件中,通过...表示传递给脚本的所有参数。

注释

单行注释用 --

a = 100
-- a

多行注释用--[[--]]


--[[
ok = "ok"
--]]
no = "no"

这里一个小技巧就是在--[[前多加一个-,会变成---[[,就会开启被多行注释的代码。

参考资料

参考书籍:lua程序设计(第4版), Roberto lerusalimschy 梅隆魁译


推荐阅读
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • 利用空间换时间减少时间复杂度以及以C语言字符串处理为例减少空间复杂度
    在处理字符串的过程当中,通常情况下都会逐个遍历整个字符串数组,在多个字符串的处理中,处理不同,时间复杂度不同,这里通过利用空间换时间等不同方法,以字符串处理为例来讨论几种情况:1: ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
author-avatar
七月de七月小
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有