Beginning Lua Programming - First steps(第一步)

来源:互联网 发布:知敬畏 守底线 强党性 编辑:程序博客网 时间:2024/05/16 06:29

第一步

这章和下章两章奠定了基础, 然后你需要学习书中余下的部分. 同样的, 他们包好了大量的资料, 虽然他们仍然很基础. 如果你以前从未编程过, 你将会学到很多新的理念; 如果你是一位有经验的程序员, 你将会看到很多你已经知道的东西. 在后面的例子中, 你会被鼓励去阅读, 但是警告: 包涵在这三章里有一些Lua建立的语块可能有你不熟悉的语言.

 

这章解释:

算法运算

变量赋值

字符串

true, false, and nil 的值

if 的声明 和 while , for, 和 repeat 循环

 

数和算法运算:基本解释器用法

Lua解释器 - lua - 是一个可以执行Lua代码程序, 你打字后他立马把你打出来
这就是为什么解释器被使用在这章, 但是它也可以涉及到Lua实现的特殊内部组件 - 更多关于这方面在下章和第10章.
在本节, 你将探索lua的基本用法

 

加, 减, 乘, 除, 指数
开始一些例子 - 2加2. 使用你的系统shell, 就好像在第一章描述的, 当你达到这里, 键入lua和按下Enter(按下一些键返回). 你应该会看到一些像下面:
Lua 5.1.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio
>

键入lua运行lua解释器, 当它运行时, 它输出它的版本号和版权信息, 然后它输出下面:
>

这是lua提示告诉你它在等待你给它一些事去做.
现在键入下面(黑体是你要键入的部分)
> print(2 + 2)

然后按Enter键. 你应该会看到下面
4
>

Lua出现在圆括号之间, 看到 2 + 2, 和接下来的print命令和输出结果到屏幕. 然后显示另外的提示来告诉你它已经准备为了更多的输入.

Lua可以操作减法, 负数, 小数, 乘法, 除法, 指数, 和这些的组合. 这是一些例子:
> print(2 - 2)
0
> print(-2 + -2)
-4
> print(2.5 + 2.75)
5.25
> print(3 * 3)
9
> print(100 / 4)
25
> print(3 ^ 2)
9
> print(5 * -5 + 1 + 1 + 0.5)
-22.5

 

和解释器交互

解释器知道如何去回复当你键入的Lua代码包含错误或者不完整. 不久, 你将会键入一些没意义的lua代码. 偶然地, 万一你没有解决这意外, 现在是时候故意去做来看看会发生什么. 键入print (2 ++ 2)然后按Enter. 你将会得到:
> print(2 + + 2)
stdin:1: unexpected symbol near ‘+’
>

Lua看到一些代码没意义(两个加好连在一起), 所以它输出一个简短的解释关于为什么它没意义. 这解释也是被知道作为错误信息.

因为Lua只是电脑程序, 它的解释开始时不总是容易理解, 但是这个(unexpected symbol near ‘+’)还算直白. 接着加号的, Lua发现一些意外 - 在这个例子额外的加号.

在输出错误信息后, Lua显示另外提示让你知道它已经准备为了更多的输入.

你将会得到相似的错误信息如果你遗漏print的圆括号, 想这样:
> 2 + 2
stdin:1: unexpected symbol near ‘2’
> print 2 + 2
stdin:1: ‘=’ expected near ‘2’

如果你键入一些没意义的不包括那些不完整的, Lua让你继续在下行完成.例如, 按Enter在右括号之前, 键入右括号, 然后再按Enter, 像这样:
> print(2 + 2
>> )
4

Lua发现你键入的第一行是不完整的, 所以它输出>>. 这是继续提示 Lua让你知道它会等待你完成你开始想输入的方法. 当Lua在下行得到右括号, 它能够输出结果

 

其他数值符号
你也可以用科学符号写数值, 在大写或小写e的前面部分被e后面的10的权相乘, 例如, 5e2 意思是 5倍10的2次方是500. 科学符号通常用来写极大或极小的数, 或让Lua输出他们.

这里有一些例子:
> print(5e2)
500
> print(5e-2)
0.05
> print(1.2193263111264E17 /

987654321)
123456789
> print(123456789 * 987654321)
1.2193263111264e+17
> print(2.3283064365387e-10 *

4294967296)
1

生活中的数是基于10的十进制. 这意味着有0-9 10个数. lua也能理解16进制(基于16)数, 使用字母a-f(或A-F)来代表10到15. 16进制数需要用0x或0X打头(在x之前是零, 不是字母O.) 他们必须是整数. 看一下这些例子:
> print(0x1)
1
> print(0x10)
16
> print(0xff)
255
> print(0XA)
10
> print(0x03e8)
1000
> print(-0xf000)
-61440
> print(0xff.ff)
stdin:1: ‘)’ expected near ‘.

Lua5.0 不能理解16进制数.

 

解释器知道如何

在学习更多关于Lua语言, 你需要知道关于解释器的2个事

 

退出解释器
不久, 你将会想暂停解释器, 有3种方法来退出解释器:
.按Ctrl+C. 发送中断信息给解释器. 如果解释器在等待你键入一些东西, 这将会退出解释器. 如果解释器被卡住, 不停的一遍一遍做一些事, 然后这组合键将会返回到等待你键入的状态.
.按Ctrl+Z(或在像Unix平台中, 包括 Mac OS X,按Ctrl+D )在开始的空行按Enter. 这将发送 end-of-file(EOF). 这是Lua的一个信号将会放弃尝试从你那得到输入.
.停止解释器最多的方法是键入下面行
os.exit()


解释器捷径

根据你的系统, 你可能可以使用你键盘上的上下键来滚动先前编辑过的行
在windows xp和windows2000中, 这种查看历史的功能被使用在cmd shell. 在windows95,98和ME中, 被使用在doskey设备(如果在运行). 在像Unix的系统上, 他被使用在GNU Readline 和History libraries中, 如果他们被连接到你编译过的lua代码.

有另一个打字保护器. 当解释器看到一行代码开头是=, 向下面一样, 他会处理该行余下的的部分把他们想成print圆括号中的代码:
> =2 + 2
4

这不是lua语言适当的一部分 - 它只工作在你交互性的键入一些代码给解释器. 这意味着它不会被困惑当你使用等号时认为它是适当的Lua, 这些你将会在下节学到. 在这章的一些例子中你可以使用 = 代替print(),但不全部都是. 粗略的说, 当你输入一行你可以单独使用 .... 按照一致性, 这本书使用print(),但是你应该在适当的时候用=.

如果你键入上下键来查看历史, 你可能(根据你的系统)看到很多行开头使用 = 的已经转换成开头使用return. 你将会在下章学习有关return的知识.

 

 

数值陷阱
在高雅的数学世界和有时候是潦草的计算机时间的交集部分, 可能发生客观的事, 这节解释主要的一个.


除以零和溢出
在算法里, 除以零是未定义的, Lua中也是一样, 这实际上意味着当在你的链接器上链接你的Lua代码时除以零将会发生的事. 去找出在你系统上所发生的, 简单的让某个数除以零并且观察结果.

这里是有可能性的不完整的列表:


.Lua 可能突然的退出(没有错误信息).
.Lua可能冻结并且你的操作系统可能显示错误信息(如果必须, 使用Ctrl+C来退出Lua)
.计算可能正确并且给出结果.这结果可能不是很规律,反而可能像这样-1.#IND, 1.#INF, Inf, or NaN.

如果你得到一个假的数比如NaN,注意:这些通常有不寻常的行为,在一定程度上不等于他们自己.
除非你准备得到这结果, 决不除以零.

 

在大多数系统中, 最高和最低的数有可能多于300个数字(当你用10进制输入时). 如果你的超出范围, 除以零的警告将会被应用.

 

变量和赋值
和大多数程序语言一样, Lua有变量, 现在,你可以把它们想成是包含值的存储空间(到目前为止数是你唯一遇到的变量,但是在这章你将会很快学到其他的类型。)当你把一个值放入变量中后,你可以通过它的名字来使用它。

 

赋值基础
把一个值放入一个变量中称作赋值。

这里有2个赋值的例子(伴随着一些输出来显示发生了什么):

> NumberA = 2
> print(NumberA)
2
> NumberB = 2 + 2
> print(NumberB)
4
> print(NumberA + NumberB)
6

等号把一个值赋值给一个变量。在这些例子中, 2被赋值给变量NumberA,4(2+2的结果)被赋值给变量NumberB。

当一个值已经被赋值给一个变量后,你可以使用变量的名字来使用这个值,就好像print(NumberA) 或 print(NumberA + NumberB).

注意Lua的等号不同于代数中的等号。代数中的等号是一个陈述表明两个事物是相等的。 Lua的等号是一个指令让两个事物相等,所以左边的可以被右边的代替。因为这样,在程序中特殊的变量在不同的时间点可能包含不同的值。这里有个例子:

> Sum = 2 + 2
> print(Sum)
4
> Sum = 2 + 5000
> print(Sum)
5002

 

这里有几个对于变量名的规则,或则标识符:一个标识符开头必须是一个字母或则下划线。它不能包含字母,下划线,数字以外的任何东西。标识符不能是Lua的保留字和关键字,它们是and, break, do, else, elseif,

end, false, for, function, if, in, local,nil, not, or, repeat, return, then, true, until, and while.

下面全都是有效的标识符
❑ a
❑ A
❑ ABC
❑ _xyz
❑ something_55
❑ AnotherThing
❑ _____

 

下面不是有效的标识符
❑ function (关键字)
❑ this-var (包含字母,下划线,数字以为的东西)
❑ 1stThing (开头不是字母或下划线)

Lua是大小写区分的,这意味着NUM,Num,和num是不同的标识符:
> NUM = 1
> Num = 2
> num = 3
> print(NUM)
1
> print(Num)
2
> print(num)
3

这同样意味着FUNCTON,Function,和fUnCtIoN是有效的标识符,因为它们都不是关键字function。

这是标识符的各种形式:
❑ totalsales
❑ total_sales
❑ totalSales
❑ TotalSales

一些程序甚至使用不同的形式来表示不同的变量类型。如果你工作在别人的代码上, 根据风格是用代码,在你自己的代码里, 选择一个风格并坚持下去。这本书使用如TotalSales的风格。Lua它自己通常使用TotalSales风格,所以在这本书里,你可以在Lua例子中寻找是否有变量被定义或被构建来辨别风格

 

Lua有一些开头用下划线后跟字母(也可能使数字)的特殊的变量,像 _G , _PROMPT2。远离使用像这些的名字让你的变量不会和它们冲突。

一个简单的下划线(_)经常被使用作为垃圾变量-需要被赋值, 但是将不会被使用。(你会在第4章和书的其它部分看到)。

 

多重赋值
你可以同时对多个变量赋多个值。你也可以同时输出多个值。逗号被用在两者之间。这些是如何在多重赋值中使用逗号并且同时输出多重值的例子:

> Sum, Product, Exponent = 10 + 10, 10 * 10, 10 ^ 10
> print(Sum, Product, Exponent)
20 100 10000000000

在这些例子中,3个值被形成通过对自己加10,对自己相乘,对自己上升10个权。这里有3个值分别赋值给3个变量Sum, Product,和 Exponent。这3个变量(更确切的说,是变量中的3个值)然后被输出。你可以使用多重赋值来交换,旋转,或交换变量中的内容。这是例子
> A, B = 1, 2
> print(A, B)
1 2
> A, B = B, A
> print(A, B)
2 1
> John, Jane, Jolene = “chips”, “lemonade”, “egg salad”
> print(John, Jane, Jolene)
chips lemonade egg salad
> John, Jane, Jolene = Jane, Jolene, John
> print(John, Jane, Jolene)
lemonade egg salad chips

 


 

继续翻译中

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕6个月了咳嗽怎么办 怀孕了咳嗽黄痰怎么办 科二5次没考过怎么办 交警开的罚单丢了怎么办 驾驶员从业资格证被水洗了怎么办 驾照考五次没过怎么办 学车每次考不过怎么办 年检超期3个月怎么办 年检超过3个月怎么办 工商执照年检时候忘记密码怎么办 个体工商营业执照年检过期怎么办 忘了审车时间怎么办 汽车年检超过时间了怎么办 星巴克金星会员到期怎么办 驾考学员证丢了怎么办 违章扣满12分怎么办 违章扣满12分后怎么办 东方时尚驾校科二考不过怎么办 东方时尚科二科三考五次没过怎么办 不想考科目三了怎么办 科目三两次没过怎么办 练科目三很紧张怎么办 驾照学员卡丢了怎么办 驾考时考试的车系统出错怎么办 驾驶证超期6个月怎么办 北京汽车年检只有电子保单怎么办 交电费户号9位数怎么办 扬州驾照12分扣完了怎么办 有大专毕业证在深圳怎么办居住证 微信解释包错误怎么办 富士康离职不批怎么办 到了怀孕年龄找不到工作怎么办 建筑公司挂靠发生人员伤残怎么办 外地生小孩落北京户口怎么办 户籍档案查不到直系亲属关系怎么办 考过了二建注册怎么办 异地工作辞职回家档案怎么办 离职怎么办档案放在人才市场 人才房住了6年后怎么办 医保辞职后断了怎么办 社保断了生育险怎么办