• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
james1207

博客园    首页    新随笔    联系   管理    订阅  订阅

Learning Lua Programming (2) Lua编程基础


开始学习Lua编程,首先从一些简单的语法开始。

一、编辑环境

下面推荐一个Lua编程的IDE,感觉是很强大的。ZeroBrane Studio,windows平台,mac平台都有。点击打开链接  官方下载地址


二、开始一些简单的编程(代码参考自http://blog.csdn.net/xiaominghimi/article/details/8770395的例子)

具体语法参考我的上一篇(转载)博客


 

-- 单行注释语句
 
--[[  
注释段落语句
  ]]
 
--引用其他lua文件,不需要加上(.lua)后缀
--require "xx"
 
--变量不需要定义,可以直接赋值
count = 100  --成员变量
local count =100  --局部变量
 
--方法定义
function hello(...)
    --打印
    print("Hello Lua!");
    print(string.format(...))
end

-- 每一行代码不需要使用分隔符,当然也可以加上
-- 访问没有初始化的变量,lua默认返回nil
 
-- 调用函数形式
hello("你懂的")

--输出:
--Hello Lua!
--你懂的 
 
--打印变量的类型
isOK =false
print(type(isOK))

--输出:
--boolean
 
-- 基本变量类型
a =nil --Lua 中值为nil 相当于删除
b =10
c =10.4
d =false
--定义字符串,单引号,双引号都可以的
e ="i am"
d ='himi'
 
--两个字符串的连接可以如下形式
stringA ="Hi"
stringB ="mi"
--可以用".."符号,连接两个字符串
print(stringA..stringB)

--输出:
--Himi
 
--另外Lua也支持转移字符,如下
print(stringA.."\n"..stringB);
 
--输出:
--Hi
--mi

--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)
stringA=string.gsub(stringA,"Hi","WT")
print(stringA);

--输出:
--WT
 
--将字符换成数字tonumber(不转也会自动转)
--将数字换成字符tostring(不转也会自动转)
stringC = "100"
stringC = tonumber(stringC)
stringC = stringC +20
stringC = tostring(stringC)
print(stringC)

--输出:
--120
 
--取一个字符串的长度使用 #
print(#stringC)

--输出:
--3

--创建 表
tableA ={}
m = "x"
tableA[m] =100
m2 ='y'
tableA[m2] =200
print(tableA["x"].."\n"..tableA.y)

--输出:
--100
--200

--另外表还可以如下形式(从1开始)
tableB ={"4","5","6","7","8"}
print(tableB[1])

--输出:
--4
 
--算术操作符
c1 = 10+2
c2 = 10-2
c3 = 10*2
c4 = 10/2
c5 = 10^2
c6 = 10%2
c7 = -10+2
print(c1.."_"..c2.."_"..c3.."_"..c4.."_"..c5.."_"..c6.."_"..c7)

--输出:
--12_8_20_5_100_0_-8

--控制操作
--if then elseif then else end
abc =10
if  abc ==10 then
    print("v1")
elseif abc == 9 then
    print("v2")
else
    print("v3")
end

--输出:
--v1


 
--for 变量=初值, 终点值, 步进 do ... end
--从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位
for i=4,10,2 do
    print("for1:"..i+1)
end

--[[输出:
for1:5
for1:7
for1:9
for1:11
]]

--也可以不制定最后一个参数,默认1的增长速度
for i=4,10 do
    print("for2:"..i+1)
end

--[[输出:
for2:5
for2:6
for2:7
for2:8
for2:9
for2:10
for2:11
]]
 
tableFor = {"himi1","himi2","himi3","himi4","himi5"}
for k,v in pairs(tableFor) do
    print("for3:key:"..k.."value:"..v)
end

--[[输出:
for3:key:1value:himi1
for3:key:2value:himi2
for3:key:3value:himi3
for3:key:4value:himi4
for3:key:5value:himi5
]]
 
--while

w1 = 20
while true do
    w1=w1+1
    if w1 ==25 then
        break
    end
end
print("while:"..w1)
 
--输出:
--while:25

--repeat

    aa =20
    repeat aa = aa+2
        print("repeat:"..aa)
    until aa>28

--[[输出:
repeat:22
repeat:24
repeat:26
repeat:28
repeat:30
]]
 
--关系操作符
--需要注意的是不等于符号 ~=  而不是!=
ax =10
bx =20
 
if ax >bx then
    print("GX1")
elseif ax<bx then
    print("GX2")
elseif ax>=bx then
    print("GX3")
elseif ax<=bx then
    print("GX4")
elseif ax==bx then
    print("GX5")
elseif ax~=bx then
    print("GX6")
else
    print("GX7")
end

--输出:
--GX2


 

 

--函数详解
 
--有一个返回值的函数
function funTestBackOne(aCount)
    local aCount= aCount+1
    return aCount
end
 
a =20
print(funTestBackOne(a))
 
--有多个返回值的函数
function funTestBackMore()
    return 2,3
end
 
a,b =funTestBackMore()
print(a.." and "..b)
 
--有变长参数的函数
function funTestUnKnow(...)
    print(...)
end
funTestUnKnow(a,b,"Himi")


--闭合函数(一个函数写在另外一个函数内)
function funTest1( ... )
    local d = 12;
    d=d+...
    function funTest2( ... )
        print(d)
    end
    funTest2()
end
 
funTest1(100)


--[[ print:
21
2 and 3
2	3	Himi
112
]]


 

这些都是简单的基础,大致入门的语法吧。

 

posted @ 2013-08-17 21:52  Class Xman  阅读(205)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3