Lua学习笔记二

while

1  
2  
3  
4  
while(条件)  
do  
  循环体  
end  

—|—

代码示例及结果:

1  
2  
3  
4  
5  
6  
a = 0  
while(a < 10)  
do  
	print(a)  
	a = a + 1  
end  

—|—

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
0  
1  
2  
3  
4  
5  
6  
7  
8  
9  

—|—

for

1  
2  
3  
for var=值1,值2,值2 do  
  循环体  
end  

—|—

从值1变化到值2,每次变化以值3为步长,执行一次循环体。表达式3不指定时默认为1.

代码示例及结果:

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

—|—

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
0  
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  

—|—

变化范围包含值2

for 遍历table:

1  
2  
3  
4  
table = {"a","b","c"}  
for i,v in ipairs(table) do  
  print(i,v)  
end  

—|—

1  
2  
3  
1	a  
2	b  
3	c  

—|—

repeat…until

1  
2  
3  
repeat  
  循环体  
until(条件语句)  

—|—

执行循环体,直到条件语句成立

代码示例及结果:

1  
2  
3  
4  
5  
i = 0  
repeat  
  print(i)  
  i = i+1  
until(i>10)  

—|—

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
0  
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  

—|—

和其他语言一样,break 可以跳出循环。

判断语句

if

1  
2  
3  
4  
if(条件语句)  
then  
  	执行语句  
end  

—|—

代码示例及结果:

1  
2  
3  
4  
5  
a = 10  
if(a>0)  
then  
  print("a>0")  
end  

—|—

a>0

if…else

1  
2  
3  
4  
5  
6  
if(条件语句)  
then  
  条件为真时语句  
else  
  条件为假时语句  
end  

—|—

代码示例及结果:

1  
2  
3  
4  
5  
6  
7  
a = 10  
if(a> 20)  
then  
  print("a>20")  
else  
  print("a<=20")  
end  

—|—

a<=20

if…elseif…else

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
if(条件一)  
then  
  条件一为真执行  
elseif(条件二)  
then  
  条件二为真执行  
elseif(条件N)  
then  
  条件N为真执行  
else  
  以上都不满足的条件执行  
end  

—|—

代码示例及结果:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
local score = 55  
if(score >= 80 and score <= 100)  
then  
	print("A")  
elseif(score < 80 and score>= 60)  
then  
	print("B")  
else  
	print("C")  
end  

—|—

c

函数

函数定义

1  
2  
3  
4  
optional_function_scope function ( argument1, argument2, argument3..., argumentn)  
    function_body  
    return result_params_comma_separated  
end  

—|—

  • optional_function_scope 指定函数是全局还是局部函数,默认不写是全局,局部是local
  • function_name 函数名
  • argument 参数列表
  • function_body 函数体
  • result_params_comma_separated 返回值,可以返回多个值,逗号隔开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

function max(num1,num2)  
  if(num1 > num2)  
  then  
    result = num1  
  else  
    result = num2  
  end  
  return result  
end  

—|—

lua 中可以将函数作为参数传递,作为回调函数:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
--登录回调  
callback = function(errorId)  
  print("errorId:"..errorId)  
end  
--登录方法  
function login(userName,passworld,loginCallback)  
  if(userName == "123" and passworld == "123456") then  
    loginCallback(0)  
  else  
    loginCallback(-1)  
 	end  
end  
login("123","123456",callback)  

—|—

返回多值

如字符换查找,返回开始和结束的位置:(索引从1开始)

1  
2  
s,e = string.find("hello world","world")  
print(s,e)  

—|—

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
function maxinum(array)  
  local index = 1  
  local max = array[index]  
  for i,v in ipairs(array) do  
    if(v > max) then  
      index = i  
      max = v  
    end  
  end  
  return index,max  
end  
index,max = maxinum({3,77,34,22,566,7,32,6})  
print(index,max)  

—|—

5 566

可变参数

Lua中可变参数和c,java中一样,用三个点…表示

1  
2  
3  
4  
5  
6  
7  
8  
function add(...)  
	sum = 0  
	for i,v in ipairs{...} do	--{...}表示可变参数的数组  
		sum = sum + v  
	end  
	return sum  
end  
print(add(1,2,3,4))  

—|—

1  
2  
3  
4  
5  
local arg = {...} -- 将可变参数赋值给局部变量  
length = #arg	--求可变参数的参数数量  
  
select('#',...) --求可变参数的参数数量  
select(n,...)   -- 访问 n 到 select('#',…) 的参数(多个值)  

—|—

糖果

糖果
LUA教程

如果不小心安装错 SQL Server 为 Evaluation 的版本,要小心当超过 180 天之后,系统就会无法正常使用了 这几天遇到一个蛮特别的案例,原本收到的问题是 “维护计划” 忽然无法使用,即便是里面没有任何的Task,都无法顺利地执行。但从对方所提供的错误消...… Continue reading

PLUM NIZ静电容键盘怎么样?

Published on September 25, 2020

程序员如何选择合适的机械键盘

Published on September 18, 2020