lua基础

lua

1. Lua特点

动态类型,弱类型. 大小写敏感

动态类型:不需要变量类型即可声明变量

弱类型: 可对一个变量赋不同得值.

数据类型 : nil(空),boolean,number,string,function,userdata,thread,table

2. 语法

1. 注释
-- 行注释: 
-- a = 123

-- 段注释
--[[
a = 123
]] 

-- 多级注释
--[[
	a = 123
	[=[
		a = 123
	]=]
]]

2. 条件语句

she = "WL"
if she == "WL" then
	print("She ~!")
elseif she == "xxx" then
    print("She is ?")
else 
    print("Where is she")
end

if…then elseif then else end

false 可以是判断条件== falsenil

[!NOte]

如,if(abc) ,abc为未赋值变量,则等同于false

3. 循环

三种循环,没有continue关键字,有break。

1. for

一般for循环

for i=1,10,2 do
    print(i)
end

for startIndex,endValue,stepLength do end

遍历循环

table 可跳转至

a = {
   1,
   2,
   pos = {
       x = 1,
       y = 2,
       z = 0
   },
   34,
   "a",
   "b",
   x = "how are you",
   aa = false,
   323
}

for i, v in ipairs(a) do
   print(i,":", v)
end
print("-----------------")
for k, v in pairs(a) do
   if type(v) == 'table' then
       for kk, vv in pairs(v) do
           print("",kk,":", vv)
       end    
   else
       print(k,":", v)
   end
end


--[[ 输出
1       :       1
2       :       2
3       :       34
4       :       a
5       :       b
6       :       323        
-----------------
1       :       1
2       :       2
3       :       34
4       :       a
5       :       b
6       :       323        
x       :       how are you
       x       :       1  
       z       :       0  
       y       :       2  
aa      :       false 
]]

[!NOTE]

从中可以看出。table的存储按顺序但不是完全按照顺序。即,所有未指定键名的值按照顺序存储,键名依次递增。

制定键名的值按特定规则,非顺序存储

而且,ipairs 循环只遍历没有指定键值的元素。pairs 则遍历所有元素。

2. while
a =1;
while a<100 do
    a= a * 2
    if a > 50 then 
        break
    end 
    print("a" , a)
end
--[[ 输出
a       2
a       4
a       8
a       16
a       32
]]

[!NOTE]

注意 end ifwhile 一一对应。

3. repeat until
a = 100;
repeat
    a= a//2
    print(a)
until a<5 
--[[输出
50
25
12
6
3
]]

[!NOTE]

死循环的循环语句。直到条件才结束。或者 使用break 提前结束。

4.运算

多数运算与其他语言相同。

1. 常用数字运算

除了 /,^

a = 5/2 	-- 输出2.5 ,除
a = 5//2 	-- 输出 2  ,整除
a = 5^3 	-- 输出125 ,阶乘

另外 没有 ++,--,+=,-= 等 运算

2. 逻辑运算

判断符号为 >, <, >=, <=, == , ~= 最后一个为不等于

逻辑运算符 and ,or ,not .三个运算符和组合。

[!NOTE]

and 优先级大于 or

a = 100
if not (a ~= 100) then
    print("good num")
else
    print("bed num")
end
-- 输出 good num

5. 数据结构

1. table

table相当于C#中的字典,每个元素都是键值对。如果没有注定键,则第一个从1开始,设置默认键名。

a = {1, 2, 34, "a", "b", x = "how are you", y = false}

print(a[1])
print(a.x)
print(a["x"])
print(a[3])
--[[输出
1
how are you
how are you
34
]]

6. 函数

local add = function(a,b)
    return a+b
end

local swapNum = function(a,b)
    return b,a
end
function addPlus(...)
    local args= {...}
    sum=0;
    for k, v in pairs(args) do
        sum = sum + v
    end
    return args,"---", #args, "----", sum
end

print(add(10,20)) 
print(swapNum(10,20))
print(addPlus(11,2,3,4,5,6,7,8,9,10))
--[[ 输出
30
20      10
table: 00000000001ea020 ---     10      ----    65
]]

7. 特殊运算符

# 取长度 。有坑。如下,自行体会

a = {x="x",1,2,3,4,nil,5,nil}
b = {x="x",1,2,3,4,nil,5,6}
c = "aaaa"

print(#a)
print(#b)
print(#c)

b[7]= nil
print(#b)
--[[ 输出
4
7
4
4
]]

.. 连接符

a= "abc"
d= "def"
g="ghi"
c = a..d..g

print(c)
--[[输出
abcdefghi    
]]
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

112_13_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值