lua 基础语法

#!/usr/local/bin/lua

注释  --

输出 print("Hello World!")

数据类型

1、nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
2、boolean 包含两个值:false和true。
3、number 表示双精度类型的实浮点数
4、string 字符串由一对双引号或单引号来表示
5、function 由 C 或 Lua 编写的函数

type 函数  测试给定变量或者值的类型

2 个方括号 "[[]]"    表示"一块"字符串。

html = [[
<html>
<head></head>
<body>
    <a href="http://www.1111.com/">111</a>
</body>
</html>
]]
print(html)

table表  的创建是通过"构造表达式"来完成,最简单构造表达式是{}   local tbl1 = {}

"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。 在 Lua 里表的默认初始索引一般以 1 开始

-- table_test.lua 脚本文件
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
    print(k .. " : " .. v)
end

function(函数)

-- function_test.lua 脚本文件
function factorial1(n)
    if n == 0 then
        return 1
    else
        return n * factorial1(n - 1)
    end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))

Lua 变量

lua 循环

1、while 循环 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
2、for 循环 重复执行指定语句,重复次数可在 for 语句中控制。

for var=exp1,exp2,exp3 do  
    <执行体>  
end  
-- ar 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。

--泛型 for 循环通过一个迭代器函数来遍历所有值
--打印数组a的所有值  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 

3、repeat...until 重复执行循环,直到 指定的条件为真时为止
4、循环嵌套 可以在循环内嵌套一个或多个循环语句(while do ... end;for ... do ... end;repeat ... until;)

流程控制

1、if 语句 if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。
2、if...else 语句 if 语句 可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码。

--[ 定义变量 --]
a = 100;
--[ 检查条件 --]
if( a < 20 )
then
   --[ if 条件为 true 时执行该语句块 --]
   print("a 小于 20" )
else
   --[ if 条件为 false 时执行该语句块 --]
   print("a 大于 20" )
end
print("a 的值为 :", a)

3、if 嵌套语句 你可以在if 或 else if中使用一个或多个 if 或 else if 语句 。

lua 函数

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

lua 运算符

1、关系运算符 + - * /

2、逻辑运算符 ==  !=  >=

3、逻辑运算符 and or not

4、其它

.. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
# 一元运算符,返回字符串或表的长度。 #"Hello" 返回 5

lua 字符串 

1、字符串操作

1 string.upper(argument): 字符串全部转为大写字母。
2 string.lower(argument): 字符串全部转为小写字母。
3 string.gsub(mainString,findString,replaceString,num) 在字符串中替换。
mainString 为要操作的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),如:string.gsub("aaaa","a","z",3);zzza 3
4 string.find (str, substr, [init, [plain]]) 在一个指定的目标字符串 str 中搜索指定的内容 substr,如果找到了一个匹配的子串,就会返回这个子串的起始索引和结束索引,不存在则返回 nil。
init 指定了搜索的起始位置,默认为 1,可以一个负数,表示从后往前数的字符个数。
plain 表示是否使用简单模式,默认为 false,true 只做简单的查找子串的操作,false 表示使用使用正则模式匹配。
以下实例查找字符串 "Lua" 的起始索引和结束索引位置:string.find("Hello Lua user", "Lua", 1) 7 9
5 string.reverse(arg) 字符串反转
6 string.format(...) 返回一个类似printf的格式化字符串 string.format("the value is:%d",4)
7 string.char(arg) 和 string.byte(arg[,int]) char 将整型数字转成字符并连接, byte 转换字符为整数值(可以指定某个字符,默认第一个字符)。
8 string.len(arg) 计算字符串长度。string.len("abc") 3
9 string.rep(string, n) 返回字符串string的n个拷贝 > string.rep("abcd",2) abcdabcd
10 .. 链接两个字符串
11 string.gmatch(str, pattern) 返回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil。
> for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
Hello
Lua
user
12 string.match(str, pattern, init) 只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
> = string.match("I have 2 questions for you.", "%d+ %a+")
2 questions

13 string.sub() 用于截取字符串  截取部分,第4个到第15个 local first_sub = string.sub(sourcestr, 4, 15)  print("\n第一次截取", string.format("%q", first_sub))

 

匹配模式直接用常规的字符串来描述。 它用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match

单个字符(除 ^$()%.[]*+-? 外): 与该字符自身配对

  • .(点): 与任何字符配对
  • %a: 与任何字母配对
  • %c: 与任何控制符配对(例如\n)
  • %d: 与任何数字配对
  • %l: 与任何小写字母配对
  • %p: 与任何标点(punctuation)配对
  • %s: 与空白字符配对
  • %u: 与任何大写字母配对
  • %w: 与任何字母/数字配对
  • %x: 与任何十六进制数配对
  • %z: 与任何代表0的字符配对
  • %x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对
  • [数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对
  • [^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对

当上述的字符类用大写书写时, 表示与非此字符类的任何字符配对. 例如, %S表示与任何非空白字符配对.例如,'%A'非字母的字符:

 

lua 数组  array = {"Lua", "Tutorial"}

lua 表  mytable = {}   table.concat 连接  table.insert 插入  table.remove删除  table.sort排序
lua 迭代器 

array = {"Google", "Runoob"}

for key,value in ipairs(array)
do
   print(key, value)
end

 lua 模块   require("<模块名>")

lua 文件IO   库用于读取和处理文件

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

 

posted @ 2022-10-21 19:44  chenwandong  阅读(497)  评论(0编辑  收藏  举报