Lua语言入门小例程

最近要做机械臂仿真和实物的编程,发现很多都是使用Lua这门脚本语言来进行编程控制的,因此就学习了一下,并且写了几个入门的小例程,在这里分享一下。

0.软件安装

直接到官网下载安装包,按照指示一步步安装即可。http://www.lua.org/versions.html,我用的是5.1.4的版本

1.HelloWorld.lua

打印直接使用print语句。注释使用--,多行注释用两个中括号,数据类型有string、number、function、boolean等。

print('Hello')  --注释
print('World')
print("Hello World!")
--[[
    多行
    注释
--]]
print("哈哈哈哈")

--数据类型
print(type("Hello World!!"))
print(type(10.4 * 3))
print(type(10))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(X)))

--从键盘读取
io.write("Input your name: \n")
name = io.read()
print ("Your name is "..name)

2.布尔字符和表.lua

Lua语言中的变量全部为全局变量,除非用local声明才会成为局部变量。

并且Lua语言只把false和nil看做是false。其它都为true,包括数字0,也会看做是true

--Lua语言中的变量全部为全局变量,除非用local声明才是局部变量
--Lua语言只把false和nil看做是false。其它都为true,0也是true
if 0 then
    print(false)
else
    print(true)
end

--在对一个数字字符串进行算数操作时,Lua会尝试将这个数字字符串转换为一个数字
print("2" + 6)  --8
print("2" + "6")    --8
print("2 + 6")  --2 + 6
print("2e2" * "6") --1200
--字符串长度
print(#"2 + 6") --5
--字符串连接
print("a" .. "b")   --ab
print(127 .. "158") --127158

--table 表,默认索引从1开始
--table表添加元素时,可以和对应索引一起添加,索引不一定是数字,如果直接添加,table会有默认索引,从1开始,如果先添加2在插入1,默认索引就会到3
a = {}
a["key"] = "value"
print(a["key"], a.key)  --当索引为字符串是也可以使用后边这种写法
a[2] = 10
print(a[2])
table.insert(a, "insert1")
print(a[1])
table.insert(a, "insert3")
print(a[3])
for key, val in pairs(a) do --输出键值对
    print(key, val)
end

3.table.lua

Lua语言表的操作主要有以下几个

--基本操作
mytable = {}
mytable[1] = "haha"
mytable = nil   --可以释放表的空间

--table.concat(),输出一个列表中的元素连接成的字符串
fruits = {"banana", "orange", "apple"}
print(table.concat(fruits))     --直接连接
print(table.concat(fruits, ","))    --指定连接字符
print(table.concat(fruits, "", 2, 3))   --指定索引连接

--table.insert和table.remove
--在表的末尾处插入mango
table.insert(fruits, "mango")
print(table.concat(fruits, ","))
--删除表末尾的mango
table.remove(fruits)
print(table.concat(fruits, ","))
--在索引2处插入mango
table.insert(fruits, 2, "mango")
print(table.concat(fruits, ","))
--删除索引2处的mango
table.remove(fruits, 2)
print(table.concat(fruits, ","))

--table.sort(),用于表的排序
table.sort(fruits)
print(table.concat(fruits, ","))

4.循环.lua

下边的程序是我抄的例程,但是在我的电脑上运行有问题,goto语句用不了,不知道为什么

--lua中没有continue语句,控制循环需要使用break和goto指令
for i = 10, 1, -1 do
    repeat
        if i == 5 then
            print("continue code here")
            break
        end
        print(i, "loop code here")
    until true
end

--goto语句不能用,不知道为啥
for i = 1, 3 do
    if i <= 2 then
        print(i, "yes continue")
        goto=continue
    end
    print(i, "no continue")
:: continue ::
    print(i, 'm end')
end

5.迭代器.lua

pairs可以遍历表中的所有部分,包括数组部分和非数组部分

ipairs只可以遍历表中的数组部分

下边程序里边那个无状态的迭代器还是值得研究一下的,可能得多看几眼,但是也不难

--泛型for迭代器
--pairs可以遍历表中的所有部分,包括数组部分和非数组部分
--ipairs只可以遍历表中的数组部分
t = {"Google", "Runoob"}
t["Key"] = "Edge"
for k, v in pairs(t) do 
    print(k, v)
end
print()

for k, v in ipairs(t) do
    print(k, v)
end
print()

--无状态的迭代器:无状态的迭代器指不保留任何状态的迭代器,在循环中可以利用无状态迭代器避免创建闭包话费额外的代价
function square(iteratorMaxCount, currentNumber)
    if currentNumber < iteratorMaxCount then
        currentNumber = currentNumber + 1
    return currentNumber, currentNumber * currentNumber
    end
end

for i, n in square, 3, 0 do
    print(i, n)
end

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值