lua编程教程第一期,一些基础的干货,有些错误大家可以指正,此为原创教程。

15 闲云清风 1天前 202次点击

最近有人来找我学习。其实很多人对这个编程方面都比较感兴趣。所以我就拿出来讲讲吧。

先声明一下我的水平并不行。如果非要评个级的话,那就是进阶一点的。入门肯定已经入了。但是因为学历和学习的原因所以学了也没有多好。全靠自学。下面我将按我的理解讲述。有初一的同学可以认识一下。不喜勿喷。

环境,AndroLua+

--现在我们来构建第一个程序。

--下面的代码是引入底层的库,通过require方法引入java的import进行第三方库的导入,因为此环境支持lua和java。

require "import"

--下面这一行使用import导入了android.app.*这个包,导入此包之后,很多的包都不需要导入,跟某些编辑器里面的CYQ有着异曲同工之妙。

import "android.app.*"

--下面这一些导入是一些其他的补充,毕竟上面那个包不一定导入了所有,os主要是一些底层的命令。比如os.time函数用于获取时间。

import "android.os.*"

--widget和view包用于正确的显示用户界面和增加操作控件,比如文本,输入框,复选框,进度条和按钮等。删除了你需要导入一大堆的库,他们可以帮你省力气,所以最好每次都导入。

import "android.widget.*"

import "android.view.*"

--[[

包和模块的作用:

包和模块相当于一些组织起来的工具。

包相当于整个工具箱,里面的函数相当于每一个小型的工具。

这些工具包会方便我们更快的调用和编写代码。

减少重复的逻辑。

一个模块是一个整体,如果是全局的模块可以在任何地方调用,但是需要引入。

他会按照预设好的规则进行程序流程。

你自定义的所有文件都可以使用import函数进行引入。

跟上面引入包的方式类似。

就是import加当前运行环境程序内对于这个程序的相对路径。

不是很长遗串的绝对路径。

具体的后面再讲。

print函数:

是所有编程语言的基础。

他可以输出调试信息,打印气泡通知,给用户一些提示等。

他的中文意思是,打印。

是编写编程语言的人,从底层写出来的函数,一般都有一个后缀JAR包作为定义。运行在c上。

--调用实例:

输出文本,你好。

像这种用两个引号括起来的类型叫做字符串string。

可以点运行看看效果。

]]

print("你好")

--[[

显而易见,他弹出了你好两个字。没有布局定义的情况下,你可以用阅读器摸到。而且会被朗读出来。

再讲一讲类型。

Lua 中有八种基本类型:

nil、空,表示没有没有值,没有内容。

boolean,布尔值,真或假,也代表着二进制的0和1。

number,数字。

string、字符串。

function,函数模块功能。

userdata,线程。

thread,携程,异步操作。

table,表,相当于其他语言的数组。

刚刚的string字符串就是其中之一。

number是数字,也就是没有用引号括起来的一个数值,但是也只能是一个数学中常见的数字。

用引号括起来的数字是字符串。不要弄混了。

一般这两种类型有时需要互相转换。就又需要用到toString要转的字符串。tonumber要转换的字符串。

这两个函数分别将数字转为字符串的值和将字符串里面括起来的数字转为数字类型。

虽然有点绕,但是后面你就能理解了。

字符串和数字的类型不能错误,不然会让程序发生异常。某些函数需求字符串作为传参的值,有些需求数字。所以要注意一下。

函数是可以自定义的。后续会仔细讲解。

print这个函数可以输出大部分的值。

包括c语言的内存地址。

比如你的表存储在的那块内存就你直接用表的变量把他的地址拿出来。

然后通过内存地址输出他,但lua没有这么麻烦,编写这门语言的人已经将这些考虑到了,而且为了让语言不那么麻烦和复杂,将这一步改到了C自己处理,所以只需要在lua索引表的值就可以打印出来了。

在c语言中取地址打印的这种方式就叫做取地址。

也是c中最伤脑的部分。这也是一个指针的基本操作。

下面是打印数值类型的调用示例。打印数字525。

]]

print(525)

--[[。

我们来学习运算符。

常用的运算符有。

+,add,加。加法。

-,minus,减。减法。

*,star,星号。乘法。

/,Slash,反斜杠。除法。

%,per cent sign,百分号。取余数的除法,也叫取模运算。

今天先讲这5个基础的。

再讲一个关键字。

local意思是本地或者变量。此关键字用于声明局部变量来存储值。

用它声明的变量只能在声明的作用域里面调用。

所以被称作局部变量。

下面会逐步讲解这些的用法。

local关键字后接变量的名字,不需要括号。使用等号=可以给变量赋值,就是将一个值存在这个变量里。

]]

local 数字一=525

--用local关键字声明了一个叫数字一的局部变量。这样证明变量不会产生全局污染,也可以帮助程序降低卡顿。下面请用print函数打印出这个变量。跟数字一样的索引方式,不需要加引号,直接索引变量名传参给函数。由此我们就可以打印出变量内部存储的值。下面是代码示例。

print(数字一)

--[[

然后在运行打印出它的值。

改变一下他的数值,

显而易见,他会跟着你的数值来变化。

可以自己玩一玩变量,让他输出更多的值,也可以按自己的喜好创建更多的变量来存储更多的值。

接着我们来讲运算符。

下面我们使用abc来创建三个变量。

新手建议用中文。

变量名的命名是可以自定义。

但是有一条最主要的规则是变量名的开头不能是数字。

剩下的随意,但是变量名必须是方便记忆的。

新手尽量使用中文。

下面的abc纯靠数学知识,一般数学的一些公式原型都会使用abc等等字母来代替,或者更多字母作为其使用到的量。

变量中文命名很多AI都是不允许的,这个原因是因为变量的中文命名某些运行环境会识别不出或者报错。但是AndroLua+支持也方便记忆。

]]

local a=2

local b=3

local c=5

--创建好变量后,我们还要创建一个变量用于存储计算后的值。比如英文命名without意思是结果,answer意思是答案,或者使用中文命名直接是结果或者答案。或者是简拼jg或者da。这里我们命名为without 。下面我们来进行加法运算。比如定义结果变量。local 声明变量后接上变量名Without,然后再写你要进行运算的第一个变量的变量名称比如a,使用运算符连接两个变量的名称,例如使用加法,下面就使用加法为例,写上一个加号,再写第二个变量比如b。代码示例请参见下方。

local Without=a+b

--这样我们就将a加b的结果存储在了Without变量中。下面打印它。

print(Without)

--[[

显而易见,他输出了加法的结果,看一下减法,乘法和除法也是同样的效果,

换一下运算符就行。

还支持多次运算符的连接,比如3+2-5。

也就是a加b减c使用运算符连接。重点讲一下取模运算。

取模是获取两个数的余数,相当于也是除法,但是他不支持输出除法结果,而是输出余数的值。比如3÷2=1余数是1,这时他会输出一个1,但是这个1是余数。

声明变量并进行加减乘除取模运算。

]]

local a=30

local b=20

local 结果1=a+b

local 结果2=a-b

local 结果3=a*b

local 结果4=a/b

local 结果5=a%b

--[[

今天我们来学习两种打印方式。

一种是普通的字符串拼接打印。

如果将字符串,变量,数字拼起来让他在一次打印中全部显示出来。

需要用到一个两个点的符号,也就是两个小数点代表字符拼接。

一个小数点在数字中代表浮点数,两个小数点代表变的拼接。

lua也分整数和浮点数类型。

两个变量或一个变量,一个字符串或数字字符串之间用这个符号可以拼接,做到一次打印字符加数量的功能。包括游戏中的数值播报也是这样拼接出来的。

栗子在下面。

]]

print("结果1="..结果1..",结果2="..结果2..",结果3="..结果3..",结果4="..结果4..",结果5="..结果5)

--[[

下面介绍和使用第二种方法。

有没有发现第一种方法打印的语句过于复杂,而且拼接量的多了,很容易出错?

这样我们就会用到第二种方法。

字符串格式化。

string.format()函数。

它可以将字符串和变量值给分开,更多的也行,主要是参数的熟练应用。

现在先讲最基础的参数%s。

s是string字符串的缩写。

%s的意思是插入字符串。将后面函数传入的值按顺序插入。

函数的第一个参数必是一个字符串。

内部可以写输出的内容。

使用%s可以依次将后面的变量取出来。然后拼接到字符串中。省了两个点。

函数多参数传递用英文逗号分隔。

后面传入的参数是要给格式化使用到的所有变量。虽然这种方式也是比较复杂的,但是可以很好的将字符串和所需要的值分开。

]]

print(string.format("结果1=%s,结果2=%s,结果3=%s,结果4=%s,结果5=%s",结果1,结果2,结果3,结果4,结果5))

--[[

再试着使用更多的变量或者是更多的打印方式来输出更多的值。

弄完了之后我们来讲解换行符。一般lua字符串用""一对双引号括起来,然后声明。换行也有两种方式。一种是用另外一种字符串表达方式用一对双方括号。也就是前面两个方括号,后面两个方括号。然后在里面写的字符串都会格式化为你写入的样子。

还有一种方法是在双引号声明的字符串中使用\n作为换行符,会按你换行符插入的格式进行给字符串输出换行。

n是newline换行符的缩写。所以\n就表示换行了。下面将依次展示这两种方式。

]]

print(string.format(

[[

结果1=%s,

结果2=%s,

结果3=%s,

结果4=%s,

结果5=%s]],

结果1,

结果2,

结果3,

结果4,

结果5))

print(string.format("结果1=%s,\n结果2=%s,\n结果3=%s,\n结果4=%s,\n结果5=%s",结果1,结果2,结果3,结果4,结果5))

--再试着更改一下初始两个变量a和b的值。看看变量的神奇作用。顺便感受一下换行服的妙用。代码中使用的--或者是--[[]]是代码注释。编译器不会执行里面的内容,所以可以用它标识一些变量函数的用处,或者是像这样讲解。方便开发快捷的查看。

共 7 条评论
车厘子 1天前
0 
支持一下。
强强 1天前
0 

收藏起来慢慢看

pskkalosqk 1天前
0 

差评。

黎封 1天前
0 

😕

moss 1天前
0 

0 
太棒了这些我之前都学过,就复习一下。
心灵亮光 3小时前
0 
期待着下一篇呢。
添加一条新评论

登录后可以发表评论 去登录