淘先锋技术网

首页 1 2 3 4 5 6 7

有编程语言基础时,学习一个新语言语法是非常快速的 ,无非从以下几点入手:

  1. 注释
  2. 变量类型
  3. 运算符
  4. 条件分支语句
  5. 循环语句
  6. 函数
  7. 特殊用法
  8. 面向对象思想(未包含在此) 等

以下通过Lua代码加注释,直观阐述以上内容

--注释方式
--[[
	多行注释
--]]
--********************变量类型********************
--lua中所有的变量 不需要申明变量类型
--lua中的所有变量 默认为全局变量  非全局前面加local
--lua中没有各种数值类型 统一都是Number类型 表示浮点数和
print("*************全局本地变量*************")
local a = 1 --局部 仅限于本文本访问  编程时 尽量都加local 
print(a)
a1 = 1.5 --全局 
print(a1)
--lua中只有false和nil才为假  0和空字符串为真
e = true;
print(e)
--lua中的string 可以用单引号或者双引号括起来
print("*************字符串相关*************")
b = '单引号字符串'
print(b)
c = "双引号字符串"
print(c)
--lua中字符串的换行 省略了\n换行替代符号
c = [[我是
你的
小宝贝
]]
print(c)
--字符串相关
str = "abCdefg"
print(string.upper(str))--小写转大写
print(string.lower(str))--大写转小写
print(string.reverse(str))--翻转字符串
print(string.find(str, "Cde"))--字符串索引查找
print(string.sub(str, 3))--字符串截取
print(string.rep(str, 3))--字符串重复
print(string.gsub(str, "Cd", "**"))--字符串修改
print(#str)--字符串长度
a = true
print(tostring(a));
 
print(string.format("我是%s,我今年%d岁了", "小宝贝", 2))--字符串长度
--lua中空的关键字时nil 相当于C#中的null
print("*************空引用*************")
d = nil
print(d)
print("*************类型获取*************")
--字符串拼接符号..
--type 类型判断
print("类型判断"..type(e))
 
--********************运算符********************
print("*************运算符*************")
--lua中没有自增减运算符
print("加法运算"..1+2)
print("余数运算"..9%2)
print("减法运算"..9-2)
print("乘法运算"..9*2)
print("除法运算"..9/2)
print("幂运算"..9^2)
--********************条件分支语句********************
print("*************条件分支语句*************")
a = 9
if a > 9 then
	print("大于9")
elseif a >= 5 then
	print("大于5")
elseif a == 3 then 
	print("值为3")
elseif a ~= 2 then --不等于
	print("值为3")
end
--********************逻辑运算符********************
print("*************逻辑运算符*************")
a = true
b = false
if a and b then --逻辑与
	print("大于9")
elseif a or b5 then --逻辑或
	print("大于5")
elseif not a then -- 逻辑否
	print("其它数")
end
--********************循环语句********************
print("*************循环语句*************")
--while 循环
print("*************while循环*************");
num = 0
while num < 5 do
	print(num);
	num = num + 1
end
--do while 循环
print("*************do while循环*************");
a = 1;
repeat
	print(a);
	a = a + 1
until a > 5
--for循环
print("*************for循环*************");
for i = 1,5 do --默认递增+1
	print(i)
end
 
for i = 5,1,-1 do --递减1
	print(i)
end
--********************函数********************
print("*************函数*************")
function f(x) 
	return x^2
end		
print(f(2))
 
function f2(x2) 
	if x2 < 10 then
		print("白卷")
	elseif x2 < 60 then
		print("分太低")
	elseif x2 < 70 then
		print("及格")
	end
end
f2(2)
print("*************变长参数函数*************")
function ff( ... )
	local arg = {...}
	local total = 0
	for i=1,#arg do
		total = total + arg[i]
	end
	print(total)
end
ff(1,2,3,4,5,6)
 
print("*************函数嵌套*************")
function f3(x)
	return function(y) return x + y end
end
a = f3(1)
print(a(2))
 
--********************复杂数据类型********************
print("*************复杂数据类型*************")
--所有的复杂类型都是table(表)
--数组
print("*************数组,列表*************")
--数组的存储类型可以混合,默认索引从1开始
a = {1,2,3,"12312",123123}
print(a[1])
print(a[4])
print(#a)--打印长度 从1开始计数 
print("*************数组遍历*************")
for i=1,#a do
	print(a[i])
end
--可以自定义索引 甚至负索引
print("*************自定义索引*************")
a = {[0]=1,2,3,[-1]=4,5}
print(a[0])
print(a[1])
print(a[-1])
print(a[2])
print(a[3])
print(#a)--打印长度 中间产生索引断裂了 会停止计数
print("*************二维数组*************")
a = {{1,2,3},{4,5,6}}
print(a[1][1])
print(a[1][2])
print(a[1][3])
print(a[2][1])
print(a[2][2])
print(a[2][3])
--迭代器遍历
print("*************ipairs迭代遍历键值*************")
a = {[0] = 1,2,[-1] = 3,4,5}
--遍历键值
for i,k in ipairs(a) do
	print("ipairs遍历键"..i)
	print("ipairs遍历值"..k)
end
print("*************pairs迭代遍历键值*************")
for i,k in pairs(a) do
	print("pairs遍历键"..i)
	print("pairs遍历值"..k)
end
print("*************迭代遍历键*************")
--遍历键
for i in pairs(a) do
	print("键"..i)
end
print("*************字典*************")
a = {["1"] = 5, ["2"] = 4}
print(a["1"])
print(a["2"])
print("*************类*************")
student = {
	--年龄
	age = 1,
	--性别
	sex = 0,
	--unity成绩
	unity = 90,
	--成长行为
	Up = function(self)
		self.age = self.age + 1
		print("我成长了"..self.age)
	end,
	--上课行为
	Learn = function( )
		print("学习")
	end
}
 
student.Learn()
student.Up(student)
student:Up()
--student.Learn()
student.age = 2
print(student.age)
 
print("*************特殊用法*************")
a,b,c = 1,2,3,4 --4会被忽略
print(a)
print(b)
print(c)
a,b,c = 1,2 --c会变为nil
print(a)
print(b)
print(c)
 
--多个返回值
function Test()
	return 10,20,30,40
end
 
a,b,c = Test()
print(a)
print(b)
print(c)