lua基础

lua 
lua中的8中基本类型 :
nil (空类型)   boolean (布尔类型)    number(数字类型) string(字符串类型)
table(表类型)  function(函数类型)    thread(线程类型) userdata(自定义类型)

使用type函数判断一个值的类型,type函数返回一个对应类型的字符串描述
例如 : local iValue = 10
if type(iValue) == "number" then
print( "iValue is a  number")
end


nil一个全局变量在第一次赋值前的默认值是nil,将nil赋予一个全局变量等于删除它;
Boolean可选值为 :false ,true ;false和nil都是假,除此之外全是真;
number表示双精度浮点数,
string表示一个字符串序列 ,是不可变的值;使用“[[]]”表示一个多行字符串且不解析转义序列
例如 :  local page=[[ <html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>xxx</title>
</head>
</html>]]
print(page)
table 表实现了关联数组(关联数组是一种具有特殊索引方式的数组,不仅可以通过数字来索引它,还可以使用字符串或其他类型的值,除nil来索引)
table没有固定大小,可以动态添加;




逻辑操作符 :
lua提供的逻辑操作符有 and ,or 和not ;
对于and ,如果他的第一个操作数位假,就返回第一个操作数 ;不然就返回第二个操作数 ;
对于or ,如果他的第一个操作符位真,就返回第一个操作数,不然就返回第二个操作数;
lua的逻辑操作数并不是简单的返回true或false ;而是返回操作数的值 
例如 : print(2 and 5)    ---》5
print(nil and 12) ---> nil
print(false and 1)  ---> false
print( 2 or 5) ---> 2
print (false or 5)  ---> 5

字符串链接 :使用操作符 ..


table构造式 :local tDays ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
print(tDays[1])
print(tDays[2])
local tb1 = {x =10,y=20}   也可以  local tb1 = {["x"] = 10,["y"]=20}
print(tb1.x);
print(tb1["x"]);
local a ={}
x = "y"
a[x]  =10
print(a[x])  --> 10 相当于a["y"]
print(a.x)   --> nil 相当于a["x"];
print(a.y)   --> 10 相当于a["y"]




赋值 ;允许多重赋值,就是将多个变量赋予多个值;
例: local x,y = 2,4
print(x)    -->2
print(y) -->4
如果需要交换两个元素的值 ;
local x,y =2,3
x,y = y,x
print(x) --> 3
print(y) --> 2


lua总是会将等号右边值的个数调整到与左边变量个数想一致;
规则是 : 如果左边个数多余右边值,那么多余的变量被赋值nil ;如果值的个数多,则多余的值被忽略 ;


局部变量与块 ;
i = 10 全局变量
local i= 10 局部变量
使用do/end声明一个块 ;
例 : do
local a = 10
end (a的作用域到此结束)

控制结构
if then else end
while 条件 do 
。。。。
end 
for var = v1,v2,v3 do
print(v1)
end
var 从v1变化到v2,v3为每次变化的步长,v3为可选,如不指定,默认1;
使用for循环注意事项 :
1,v1,v2,v3 这三个表达式在循环开始前一次性求值的,并不会每次循环都进行求值;
2,控制变量var会被自动的声明为for语句的局部变量,仅对循环体内可见;
break与return
break用于结束一个循环;return用于结束一个函数并返回结果;


函数 :
函数定义的特殊情况 :一个函数若只有一个参数,且此参数是字符串或table,那么小括号可以省略;
例 : print "hello world" --> print("hello world") 等价
 print [[a multi-line 
msg ]]
 f{x=10,y = 20} --> f({x=10,y=20})
### Lua基础语法概述 Lua 是一种轻量级脚本语言,具有简单而强大的特性。以下是关于 Lua 的基本语法介绍: #### 变量与数据类型 Lua 支持八种原生数据类型[^2],其中包括四种简单的变量类型(`nil`, `number`, `string`, 和 `boolean`),以及四种复杂的变量类型(`table`, `function`, `thread`, 和 `userdata`)。 - **Nil**: 表示无值的状态。 - **Number**: 用于表示整数和浮点数。 - **String**: 字符串可以通过双引号或单引号定义。 - **Boolean**: 包含两个值:`true` 和 `false`。 例如: ```lua a = nil -- Nil 类型 b = 10 -- Number 类型 c = "Hello" -- String 类型 d = true -- Boolean 类型 ``` #### 关键字 Lua 中的关键字列表如下[^3],这些关键字不能被用作变量名或其他标识符名称: - `and`, `break`, `do`, `else`, `elseif`, `end`, `false`, `for`, `function`, `if`, `in`, `local`, `nil`, `not`, `or`, `repeat`, `return`, `then`, `true`, `until`, `while`, `goto`. #### 字符串操作 字符串的操作是 Lua 编程中的重要部分之一。通过内置的 `string` 库可以实现各种字符串处理功能。例如,使用 `string.sub()` 函数可以从指定位置提取子字符串[^1]。 代码示例: ```lua print(string.sub("Hello Lua", 4, 7)) --> 输出 'lo Lu' print(string.sub("Hello Lua", 2)) --> 输出 'ello Lua' print(string.sub("Hello Lua", -3, -1)) --> 输出 'ua' ``` #### 函数定义 函数在 Lua 中既可以作为普通的语句块存在,也可以作为一个表达式的返回值。匿名函数通常用于回调或者闭包场景中[^4]。 示例代码展示如何创建并调用带参数的函数: ```lua -- 定义一个加法器函数 function add(a, b) return a + b end result = add(5, 3) -- 调用该函数并将结果赋给 result print(result) --> 输出 8 ``` 对于更高级的应用场合,则可能涉及嵌套函数甚至闭包结构的设计思路。下面是一个利用闭包特性的实例演示: ```lua function createCounter(startValue) local count = startValue or 0 -- 初始化计数值,默认为零 return function() count = count + 1 -- 更新内部状态 return count -- 返回当前计数值 end end counterA = createCounter(10) -- 创建基于初始值 10 的计数器 A print(counterA()) --> 输出 11 print(counterA()) --> 输出 12 ``` --- #### 控制流语句 控制流程主要包括条件判断 (`if`)、循环迭代(`for`, `while`)等逻辑构建单元。这里给出几个典型片段供参考学习: ##### 条件分支 ```lua value = 5 if value > 0 then print("Positive number") --> 当 value>0 执行此条目 elseif value == 0 then print("Zero") else print("Negative number") end ``` ##### 循环遍历 ```lua for i=1,5 do -- 数值范围内的固定次数执行动作 print(i) end --> 分别输出 1 到 5 i = 1 -- 使用 while 实现相同效果 while i <= 5 do print(i) i = i + 1 -- 自增操作不可遗漏 end ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值