当前位置: 首页 > article >正文

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 <name>可以在命令交互模式加载一个库。
命令交互模式下,使用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 梅隆魁译


http://www.kler.cn/a/182.html

相关文章:

  • 左神算法基础巩固--3
  • 【传统枪机现代枪机的功能需求】
  • C语言的语法
  • 【漏洞工具】小米路由器任意文件读取漏洞python图形化框架利用工具(poc|exp)
  • 课题推荐——基于GPS的无人机自主着陆系统设计
  • Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
  • 被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...
  • iOS 语言基础初探 Xcode 工具
  • 步进电机运动八大算法
  • 什么是双亲委派模型?双亲委派模型有何作用?
  • Fabric系列 - 多通道技术(Muti-channel)
  • 【C语言蓝桥杯每日一题】—— 单词分析
  • 卷王都在偷偷准备金三银四了...
  • 基于SpringCloud的微服务架构学习笔记(4)http客户端Feign和网关GateWay
  • Python 的IDE——PyCharm
  • 面试官:关于CPU你了解多少?
  • 出道即封神的ChatGPT,现在怎么样了?
  • 【C语言】指针的深度理解(一)
  • 详谈parameterType与resultType的用法
  • HDFS黑名单退役服务器
  • 2023年再不会Redis,就要被淘汰了
  • 【算法】六大排序 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序
  • 【AcWing】蓝桥杯备赛-深度优先搜索-dfs(2)
  • 【Java版oj】day08两种排序方法、最小公倍数
  • 11.落地:微服务架构灰度发布方案
  • Android 架构之长连接技术