菜狗教程 —— Lua 篇 01

Hello World

官方网站:www.lua.org/start.html

装置完成后,运用lua或许lua -i进入交互式编程形式,或许运用lua <file_name>履行脚本文件。

【菜狗教程】Lua.01 -  基本语法和字符串处理

变量

Lua 是动态类型语言,变量没有固定类型。变量默许是大局的,部分变量需要运用关键字local显式声明。

变量有8种类型:

  • nil
  • boolean
  • number
  • string
  • function
  • userdata
  • thread
  • table

能够运用 type() 函数输出任何变量的类型,输出的类型为 string,内容是上面8种之中的一个。

nil 表明没有任何值,也就是「空」。所有变量在未赋值之前都是 nil,将 nil 赋值给变量相当于删去。nil 能够用来判别是否持平(nil==nil = true),也能够将 nil 用作判别条件,此时相当于 false。

boolean 只要 true 和 false。Lua 中只要 nil 和 false 为假,其他都是真(包含数字 0)。

number 类型用于表明所有的数字,约等于 double。

string 能够用双引号或单引号表明,类似 python。也能够用[[]]包起来以不需转义的方法保存内部格局,相当于 Kotlin 的三引号。

string 类型能够直接进行数学运算,但如果内容无法转换成 number,就会报错。

string 拼接运用 .. 运算符,# 加 string 能够获得 string 的长度。更多 string 操作后边再独自说。

table 是 Lua 唯一的集合,运用 {} 创建。用法非常灵活,能够当成 Array 或许 Map 运用,也能够有更奇特的用法(比方模仿继承和多态等面向对象编程的才能)。

table 不指定 key 的时候相当于 Array,可是主动生成的 index 是从 1 开始的。指定 key 的时候相当于 Map。

table 索引能够用 [],将对应 index 或许 key 的 value 赋值成 nil 表明删去

function 在 Lua 中能够当做变量运用。其他关于 function 的内容独自打开写。

thread 在 Lua 中实际上是一种协程,详情后边打开。

userdata 表明一种自界说数据,通常来源于脚本外部(比方 C++ 的一个指针),能够依照一定方法运用。

【菜狗教程】Lua.01 -  基本语法和字符串处理

运算符

Lua 的大部分运算符是常规的管用运算符,就有几个是需要特别注意一下的:

运算符 功用
~= 不等于
# 取 string 或 table 的长度
and 逻辑与
or 逻辑或
not 逻辑非

流程操控

分支:

  • if – then – else – end

循环:

  • while – do – end
  • repeat – until
  • for i=exp1,exp2,exp3 – do – end
  • for k,v in pairs(table) – do – end

Lua 不运用花括号划定作用域,注意不要遗失 then、do 和 end。

【菜狗教程】Lua.01 -  基本语法和字符串处理

pairs 是一个内置函数,能够为 table 供给一个迭代器

函数

function 也是变量,遵循默许大局,加 local 变部分的规则。

function 的规模从关键字 function 开始,到 end 结束,同样不需要花括号。

Lua 中 function 能够接收恣意数量参数,回来恣意数量的值。参数列表随函数一起界说,回来值则不需要在界说中声明。参数列表也能够运用 ... 表明可变长度。

字符串

string 的基本用法在变量中现已提到过,但字符串处理是比较常用的内容,这儿弥补一些 string 的内置函数。

Lua 供给了一些内置函数来处理 string:

函数名 功用
string.upper(arg) 变大写字母
string.lower(arg) 变小写字母
string.gsub(inputStr, findStr, replaceStr, [replaceCount]) 找到并替换(指定次数)
string.find(inputStr, findStr, [init, [end]]) 找打并回来位置,两个回来值分别是 start end
string.reverse(arg) 反转字符串
string.format(…) 格局化输出(类似 printf)
string.char(args) ASCII 数字转字符串
string.byte(inputStr, [index]) 指定字符转 ASCII
string.len(arg) 计算字符串长度
string.rep(arg) 重复字符串

简单举几个比如,交互式编程形式也能记住之前界说的变量,很推荐初学者(指我自己)随便试试。

【菜狗教程】Lua.01 -  基本语法和字符串处理

调试 Lua

Lua 中的注释运用 -- 标识,多行注释是结合 -- 和保存字符串格局的 [[]]

Lua 是用 print 函数输出日志,debug 库供给了一些才能以便更好的输出运行时信息。

彩蛋环节

【菜狗教程】Lua.01 -  基本语法和字符串处理

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。