十分钟上手基于Core的Lua编程语言
前言:无论您擅长什么语言,C、python、Java、Lua、或PHP,哪怕是刚入门的编程小白,只要您掌握了最基本的编程思想比如:if, else, for, while的用法,您基本就可以很快速的上手 Core 的编程开发了。在 Core 上面的编程只会涉及到最基本的编程语法,而编程语言自带的一些高级特性在 Core 上您基本用不到,即使Core 也支持这些高级特性。Core 编程语言采用的是 Lua,一个执行效率介于 C 和 Python 之间的的脚本语言,目前来看除了 C 语言,也就只有Lua更适合于在资源有限的嵌入式 CPU 上开发程序了。所以不管是Lua也好,Python也好,它只不过是一个语言工具,最重要的是掌握基本的编程思想,这样上手其他语言也会非常的快。
下面将介绍一些在Core中常用到的一些Lua语法知识,至于其他Lua相关的高级特性您完全可以不用了解,或者遇到什么问题在网上查才是最高效的学习方式。
一、函数、变量
例1.1 全局变量、局部变量及函数的定义和使用:
a = 5 -- 全局变量
--定义一个函数func()
function func()
local a = 10 -- 局部变量
b = 20 -- 全局变量
end
func()
print(a,b) --> 5 20
代码解析:以上代码中 print 打印输出的 a 和 b 的值分别为5和20。代码中定义了两个变量 a,一个是全局变量,一个是局部变量,虽然局部变量 a 在 func() 函数中被赋值为10,但离开func()函数体范围后,print 打印的 a 仍然是全局变量 a 的值5。对于全局变量 b,即使是在在函数体 func() 中定义的,也不影响其全局性。所以 Lua 中定义的变量默认为全局变量,如果想定义局部变量,需要在变量前面加上 local 修饰语。
二、数组、表(table)
表(table)是 Lua 语言中的一种数据结构,既可以当作数组(类似于 C 语言中的数组)来用、也可以当作列表和字典(类似于 Python 中的列表和字典)来用。更多关于 Lua Table 的知识请参考此处。
但这里重点介绍一下数组,因为在 Core 编程中数组使用的频率较高。数组也是表的一种特殊形式,只不过其键值是用整数表示的。提到数组可能我们会联想到 C 语言中的数组。没错,在使用上二者确实很相似,但有一点一定要注意的是 C 语言中的数组下标是从0开始,而 Lua 的数组下标是从1开始这点需要留意。**熟悉 C 编程的人经常会在此犯错误。**下面介绍数组的一些用法:
例2.1 元素为字符串的数组:
array = {"shine", "blink", "core"}
--连续打印出array[1],array[2],array[3],
for i= 1, 3 do
print(array[i])
end
以代码上输出为:
shine
blink
core
例2.2 元素为数字的数组:
a = {1, 3, 5, 7, 9}
--将数组a中的元素值全部加1并打印输出
for i= 1, 5 do
a[i] = a[i] + 1
print("a[i] = %d", a[i])
end
以代码上输出为:
a[1] = 2
a[2] = 4
a[3] = 6
a[4] = 8
a[5] = 10
三、流程控制:if、elseif、else
例3.1 if - elseif - else流程:
a = 99
b = 101
c = 0
if a > 100 then
print(string.format("a = %d", a))
elseif b > 100 then
print(string.format("b = %d", b))
else
print("found no values larger than 100")
end
解析:代码运行后的输出为 “b = 101”。
例3.2 if 条件中使用 and:
a = 99
b = 101
c = 0
--判断a和b的值都大于100才输出“yes”
if a > 100 and b > 100 then
print("yes")
else
print("no")
end
解析:代码运行后输出为 "no"
例3.3 if 条件中使用 or:
a = 99
b = 101
c = 0
--判断a或b的值任意一个大于100就输出“yes”
if a > 100 or b > 100 then
print("yes")
else
print("no")
end
解析:代码运行后输出为 "yes"
四、循环控制:for、while
例4.1 数值 for 循环:
定义:
--var 从 p1 变化到 p2,每次变化以 p3 为步长,p3 如果不指定,默认为1。
for var=exp1,exp2,exp3 do
<执行体>
end
数值 for 循环例子:
--例如:
a = {1, 3, 5, 7, 9}
--将数组a中的元素值全部加1
for i= 1, 5 do --这里省掉了第三个参数步长(p3),所以是按1为步长,将数组a的元素逐个打印出来
print("a[i] = %d", a[i])
end
以代码上输出为:
a[1] = 1
a[2] = 3
a[3] = 5
a[4] = 7
a[5] = 9
例4.2 泛型 for 循环:
--打印数组a的所有值
a = {1, 3, 5, 7, 9}
for i, v in ipairs(a) do
print(i, v)
end
以代码上将连同数组中每个元素的索引号也打印出来:
1 1
2 3
3 5
4 7
5 9