就如同C里的if else,while,do,repeat。就看lua里怎么用:

1、首先看if else

t = {1,2,3}

local i = 1

if t[i] and t[i] % 2 == 0 then
print("even")
else
print("odd")
end

lua木有C里的&&,而是and来表示;if 之后跟表达式,之后要更个then 最后语句结束都要写end 表示这个chunk结束了。

2、while

while t[i] do
print(t[i])
i = i + 1
end

3、do end

do
print(t[i])
i = i + 1
end

4、repeat until

local i = 1
repeat
print(t[i])
i = i + 1
until t[i] == nil

5、for的使用方法

for i = 1, #t do
print(t[i])
end

当然for循环里还能够直接调用lua API

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

6、break使用方法

for k,v in pairs(t) do
print(k , v)
if k == 2 then
break
end
end

课后题解答:

1、lua为毛支持elseif这样的写法

比方能够这么写:

for k,v in pairs(t) do
if k == 2 then
print('111')
elseif k == 1 then
print(k , v)
end
end

这样整个if ...end是一个chunk;假设if else分开写,就得这样:

t = {1,2,3}

for k,v in pairs(t) do
if k == 2 then
print('111')
else if k == 1 then
print(k , v)
end
end
end

多出了一个end。

由于lua里没有switch,假设选择分支比較多写那么多end非常丑陋,so就能够elseif一起用啦。

2、写无条件运行代码,假设c里我喜欢用do{}while(false);lua就能够有非常多写法,来个最easy想到的:

local i = 0
repeat
i = i + 1
print(i)
if i > 10 then
break
end
until false

3、第三个问题,我已经用第二个解答回答了,在lua里是要用到repeat until来做的。

4、改动恶心的goto语句,的确看着非常不爽。改了就清爽多了:

function room1()
repeat
local move = io.read()
if move == "south" then
return room3()
elseif move == "east" then
return room2()
else
print("invalid move")
end
until false
end function room2()
repeat
local move = io.read()
if move == "south" then
return room4()
elseif move == "west" then
return room1()
else
print("invalid move")
end
until false
end function room3()
repeat
local move = io.read()
if move == "north" then
return room1()
elseif move == "east" then
return room4()
else
print("invalid move")
end
until false
end function room4()
print("Congratulations, u win!")
end room1()

5、goto的限制

goto不能调到某个语句块内。由于内部是不能为外部所知道的。为毛不能跳出函数块,书里的解释是:

stackflow的答案是:

Your guesses are hinting at the answer. The reason is because the goto statement
and its destination must reside in the same stack frame. The program context before and after the goto need
to be the same otherwise the code being jumped to won't be running in its correct stack frame and its behavior will be undefined. goto in
C has the same restrictions for the same reasons.

6、这道题看到goto就好凌乱,我压根就打算用goto。也驾驭不了介个,so不分析了。

lua 语句学习的更多相关文章

  1. lua本学习笔记功能

    Lua本学习笔记功能 1.  函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_ ...

  2. 【java开发】分支语句、循环语句学习

    一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...

  3. SQL语句学习手册实例版

    SQL语句学习手册实例版 表操作 例1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  4. SQL 语句学习

     Sql语句学习 一. select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and roo ...

  5. Python第一周基本语句学习整理

    目录 Python第一周基本语句学习整理 一.字符串切割 二.体重单位转换 三.计算器的实现 四.猜年龄游戏 Python第一周基本语句学习整理 一.字符串切割 代码实现: s = 'luowenxi ...

  6. 1903021121—刘明伟—Java第四周作业—java分支语句学习

    项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第四周作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果). 扩展阅 ...

  7. 《Lua程序设计》第4章 语句 学习笔记

    Lua中的常规语句包括:赋值.控制结构和过程调用.Lua还支持一些不太常见的语句,如:多重赋值(multiple assignment) 和 局部变量声明.4.1 赋值Lua允许“多重赋值”,也就是一 ...

  8. GJM : Lua 语言学习笔记

    Lua笔记 容易与C/C++整合 Lua所提供的机制是C所不善于的:高级语言,动态结构,简洁,易于测试和调试. Lua特有的特征: `1:可扩展性.卓越的扩展性导致了很多人将Lua用作搭建领域语言的工 ...

  9. [2017.02.07] Lua入门学习记录

    #!/home/auss/Projects/Qt/annotated/lua -- 这是第一次系统学习Lua语言 --[[ 参考资料: 1. [Lua简明教程](http://coolshell.cn ...

随机推荐

  1. PHP房贷计算器代码,等额本息,等额本金

    debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷 ...

  2. java c c++大学补遗

    第一次面试时的问题是一个看起来50多数的老工程师问的, 仍然记忆犹新 java(面向对象)的基本特性? 封装 继承 多态 工作几年后,各种框架用来用去, 回想起这个问题,java也就剩下这几个特性了

  3. T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用

    1 关于C#中文本模板(.tt)的简单应用https://blog.csdn.net/zunguitiancheng/article/details/78011145 任何一个傻瓜都能写出计算机能理解 ...

  4. jquery双日历日期选择器bootstrap-daterangepicker日历插件

    这个插件既可以作为双日历也可以作为单日历插件(jquery的插件在jquery插件库中http://www.jq22.com/下载很方便,在CSDN下载真麻烦) 引用 <meta http-eq ...

  5. 6.ConcurrentHashMap jdk1.7

    6.1 hash算法 就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所 ...

  6. linux无敌权限之chattr

    chattr 修改文件或者目录的文件属性,添加超级权限 -R 递归修改文件机子目录 -V 显示详细修改的内容 + 在原有的基础上追加参数 — 减参数 = 跟新为指定参数 a append 设定改参数后 ...

  7. js判断文件是否存在的方法

    在做电力监控项目的时候,有一个需求就是左右布局的框架,点击左边的图形文件地址,然后去文件夹中找到文件,再在右边出现对应的图形文件,但是有些文件可能是配置的时候有问题,找不到文件,所以js需要判断,以下 ...

  8. vim创建新的命令

    转自:http://man.chinaunix.net/newsoft/vi/doc/usr_5F40.html#usr_40.txt *40.1* 键映射 简单的映射已经在 |05.3| 介绍过了. ...

  9. FZU 1921——栀子花开——————【线段树单点更新】

    栀子花开 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  10. linux安装git、node、pm2

    一.安装Git 下载:# wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz 解压:# tar -zxvf git-2. ...