跳到主要内容

十分钟上手基于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

例4.3 while循环:

a = 0
--循环打印出 a 的值
while(a < 5)
do
print("a = ", a)
a = a+1
end

以上代码输出如下:

a = 0

a = 1

a = 2

a = 3

a = 4

五、基本运算

以下代码演示了常用的六种逻辑运算

定义 a = 0x01

定义 b = 0x10

1

程序打印输出结果如下:

2

六、结语

关于 Core 开发中常用到的 Lua 语法知识就介绍到这里,如果您过去已经掌握了其他的编程语言甚至 Lua 语言那么您看上面的教程应该完全无压力,但如果您还是刚入门的小白看的不是太懂也没关系,因为 Core 会提供大量的应用例程,多看多参考自然会慢慢掌握。

注意:Core 提供的例程中完全没用到 Lua 语言的任何高级特性,比如模块和包、元表、协同程序、面向对象等。所以如果您只是基于Core 平台开发的话,这些概念可以不用掌握。