lua笔记

来源 https://www.cnblogs.com/AaronBlogs/p/7111056.html

string(字符串)字符串由一对双引号或单引号来表示。

string1 = "this is string1"
string2 = 'this is string2'

也可以用 2 个方括号 "[ [ ] ]" 来表示"一块"字符串。

_str2=[[my name is jack!]]

print(_str2)

  • 在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:
    print("1"+5)                 --6
    ("1"+"6")              --7
    print("3+7")              -- "3+7"
  • 关于字符串拼接,使用.. 对字符串进行拼接
    value=11
    print("value="..value)    --value=11
  • 使用 # (井号)来计算字符串的长度,放在字符串前面,如下实例:
    mail = "ukraine_lee@163.com"
    print(#mail)
    --19

日期格式化:

day=1
month=5
year=2017
date=string.format("日期:%02d/%02d/%03d",day,month,year)
print(date)

Table(表)

在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是大括号{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表:

-- 创建一个空的 table
local tbl1 = {}  
--python字典初始化 dict = {'a': 1, 'b': 2, 'b': '3'}  列表(List)初始化['physics', 'chemistry', 1997, 2000]  
--Python的数组分三种类型:
--(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
--定义方式:arr = [元素]
--(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
--定义方式:arr = (元素)
--(3) Dictionary 词典类型, 即是Hash数组。
--定义方式:arr = {元素k:v}

-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}  --苹果,梨,橙子,葡萄
local tbl2={X=3,y=4} --指定键值初始化  X,Y是键,值是3,4

不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。

local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
end
-- 1 2 3 4

table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
表函数的定义和使用:

tab={x=2,y=3}
function tab:setValue(m_x,m_y)  --注意定义的时候使用了:冒号
tab.x=m_x
tab.y=m_y
end
tab:setValue(5,6)    --注意,在调用的时候也必须和定义时一致使用冒号。
print(tab.x,tab.y)
  • Table连接:
m_table={"a","b","c"}
temp=table.concat(m_table) --注意table是关键字
print(temp)
  • 插入和移除:

插入:

m_table={"a","b","c"}
table.insert(m_table,"d")
print(m_table[4])

移除:

table.remove(m_table) --移除方法,会移除最后一个元素
for k,v in pairs(m_table) do
print(k,v)
end

function (函数)

函数还可以像下面这样存在一个变量里:

function function_name(n_value)
    return n_value+1
end
print(function_name(7))
--这里同python的使用很像
func_self=function_name  
print(func_self(5))

while 循环

Lua 编程语言中 while 循环语法:(注意不同于C# 语句没有大括号)
语法:

while(condition)
do
   statements
end

实例:

a=1
while( a < 5 )
do
   print("a 的值为:", a)
   a = a+1
end

for 循环

数值for循环

Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。
Lua 编程语言中 for语句有两大类:(注意与C#的for 循环有较明显区别)
第一种:数值for循环

for var=exp1,exp2,exp3 do
<执行体>
end

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

实例:

for i=1,5 do
print(i)
end

泛型for循环

泛型for循环通过一个迭代器函数来遍历所有值
在lua中pairsipairs两个迭代器的用法相近,但有一点是不一样的:

pairs可以遍历表中所有的key,包含索引,和自定义类型key
ipairs 仅可以遍历出具备索引的值

_table2={"Suanday","Monday"}
_table2["ukey"]="uvalue" --键值都是字符串
intkey=8
_table2[intkey]="uvalue" --键是number 值是字符串
for k,v in ipairs(_table2) do
print(k,v)
end
-- 输出结果是 (table2 中仅具备索引的2个值被输出了)
1 Suanday
2 Monday
for k,v in pairs(_table2) do
print(k,v)
end

-- 输出结果是(所有的键值均被输出)
1   Suanday
2  Monday
ukey  uvalue
8   uvalue

运算符

关系运算符

~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true

逻辑运算符

not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。
设定 A 的值为 true,B 的值为 false:
not(A and B) 为 true。

其他运算符

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

原文地址:https://www.cnblogs.com/zh672903/p/11031731.html