LUA语法

这篇博客介绍了Lua语言中的条件控制结构,如IF的不同写法,并强调了条件表达式的注意事项,包括真假值的判断。此外,还讲解了循环结构,如for和while循环的使用细节。对于函数和数组(表)的定义与操作也有详细说明,特别是函数返回值和数组下标的特性。最后,提到了如何在Lua中模拟实现类似C语言中的switch-case语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--关于IF--
1、IF的写法1:
if (条件) then
  语句1;
  语句2;
end

2、IF的写法2:
if (条件) then
  语句1;
  语句2;
else
  语句3;
end

3、IF的写法3:
if (条件) then
  语句1;
  语句2;
elseif (条件) then
  语句3;
end

4、注意:if和条件后面,都要加上then。                 !!!

========================
--关于条件表达式--
1、“条件”的写法:
if (a > b and c < d) then -- &&            !
if (a <= b or c >= d) then
if (not (a == a)) then
if (a ~= b) then   -- 不等于        !

2、注意:除“nil”与bool类型的“false”以外, 一切数字与字符串(包括0与空串)都是true。 !!!

3、如果想判断一个值是不是C++意义上的TRUE,可写成:
if (a ~= 0) then


=======================
--关于循环--
1、普通for循环
for i=1,10 do
  print(i)
end
2、递减的for循环
for i=10,1,-1 do
  print(i)
end

3、注意:for语句中的 i 是local型的局部变量,仅在“for循环内部”有效。 !
   注意:在循环中不要去修改控制变量 i 。 !
   注意:如果在条件部分(for和do之间)有函数调用,这些函数只会调用一次。 !

4、while循环及break调用。
local i = 1
while a[i] do
  if a[i] == v then break end
  i = i + 1
end


=======================
--关于函数--
1、无返回值的函数:
function 函数名(参数,...)
  语句;
end

2、带1个返回值的函数:
function 函数名(参数,...)
  local a;
  a = 值;
  return a;
end

3、注意:内部变量必须用“local ”来限定,否则会被LUA当成“全局变量”。      !!!

========================
--数组(表)--
1、数组定义:
local array = { 1, 2, 3, 4 };
local array2 = {
  { 1, 2, 3 },
  { 2, 3, 4 }
};

2、数组使用:
a = array[1];
b = array2[1][3];

3、注意:数组的下标是1基的。也就是array是从1~4。                 !!!

4、local size = table.getn(array) --这样可以取到表的长度为4(需要lua_tablibopen库支持)

5、数组元素的最后一个值后面,可以多加一个逗号(,)。例如:local array = { 1, 2, 3, 4, };


==========================
--其它--
1、C++程序员可以在C++原来有“;”的地方添加“;”,有没有“;”对LUA无区别。

2、注释的写法是:用“--”代替“//”。用“--[[ 说明 --]]”代替“/* 说明 */”

3、字符串中的转义符:
以下是会字符转义的, like c 
>>>>>>>>>>
\a --- bell 
\b --- backspace 
\f --- form feed 
\n --- newline 
\r --- carriage return 
\t --- horizontal tab 
\v --- vertical tab 
\\ --- backslash 
\" --- quotation mark 
\' --- apostrophe 
\[ --- left square bracket 
\] --- right square bracket 
\ddd ===> 转义成 ddd 对应的字符。比如 print("\65") ===> A

4、字符串与整数的连接(整数转字符串):
local nItemType = 123;
local szItemType = "ItemType" .. nItemType;
-- 结果是 szItemType 是 "ItemType123"

5、字符串转整数:
local szDigital = "123456";
local nResult = szDigital + 333;
-- 结果是 nResult 是 123789

===========================3




Lua里的"switch-case"语句

Lua本身并没有提供switch-case语句,难道说我们就只能靠不断的"if ... elseif ... "这样冗长的方式来实现选择的功能么?当然不是这样的。Lua提供了功能强大的metatable,我们可以选取任意的数据类型作为table的索引类型和元素类型。而实质上在C语言中,switch-case语句是根据不同的情况(参数的值)来选择执行不同的动作,数组则是根据不同的下标返回对应的数据。如果函数可以作为一种数据类型存在,那么很明显switch-case语句只是生成了一个元素类型是函数的数组而已(其实C编译器也确实是这么做的)。在Lua里函数确实是一种数据类型, 所以自然而然就可以像下面这样写出:

复制代码
 1 print "Hello, switch-case"
 2 
 3 local switch = {
 4     [1] = function()    -- for case 1
 5         print "Case 1."
 6     end,
 7     [2] = function()    -- for case 2
 8         print "Case 2."
 9     end,
10     [3] = function()    -- for case 3
11         print "Case 3."
12     end
13 }
14 
15 local a = 4
16 local f = switch[a]
17 if(f) then
18     f()
19 else                -- for case default
20     print "Case default."
21 end
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值