Lua:Statement

Lua支持:赋值、控制结构、函数调用等,另外Lua也支持一些所谓“奇葩”的语句段,那就是多重赋值还有局部声明。

4.1 Assignment
基本的赋值同其他语言类似:

a = "hello" .. "world"

所谓“奇葩”的多重赋值:

a,b = "hello","world"
eg.
a,b = "hello","world" print(a) --hello print(b) --world

多重赋值的时候,多余的值会被舍弃,而不足补nil

eg.
a,b,c = 1,2,3,4          --4 会被舍弃
a,b,c = 1,2               -- c 会被赋值nil

作者也指出,多重赋值的速度亚于单一的赋值,所以一般在函数返回多个值的时候才会使用多重赋值。

Local变量
Local变量有其范围,因此可以使用local限定变量的有效范围,在某些编译环境下,会将每一行视为一个chunk,因此local的限定作用将会失效。此时的解决方案是使用关键字do-end来实现chunk:
eg.

do<chunk>
end

使用local变量的好处是拥有更快的速度,并且local变量出了chunk便会被系统收回内存使用。

控制结构
1、if then else结构
eg.

if <condition> then<body>
else<body>
end

eg.注意此处不需要多余的end

if <condition> then<body>
elseif <condition> then<body>
elseif <condition> then<body>
else<body>
end

因为lua中没有switch语句,所以上述语句的使用一定程度上能达到switch的效果。

2、while结构
当while条件为真的时候循环

while <condition> do<body>
end

3、repeat-until 结构
循环,直到until的条件为真

repeat<body>
until <condition>

4、for
Numeric for 和Generic for

Numeric for
eg.

for var = exp1,exp2,exp3 do<body>
end

这个循环用var的值(起始值为exp1,结束值exp2,每一步变动值exp3)来执行循环体。要注意的是,exp1,2,3这三个值只会执行计算一次,并且var的语意范围只在循环体内部有效。
提前结束循环可以使用break关键词。

Generic for
使用到了迭代器:迭代遍历文件每一行(io.lines);迭代遍历table(pairs);迭代遍历一组序列(ipairs);遍历字符串的每一个字符(string.gmatch)
eg.

Break、return、goto
一般用break和return来跳出某个语句快,而goto则用来跳转到某个指定的函数。Lua中的goto使用恰当的话能发挥非常大的作用,这个需要注意一下。

转载于:https://www.cnblogs.com/zhong-dev/p/4044581.html

《Programming in Lua 3》读书笔记(五)相关推荐

  1. FFmpeg从入门到精通读书笔记(1)

    笔者才开始学习音视频开发,FFmpeg从入门到精通读书笔记系列主要是基于阅读刘歧.赵文杰编著的<FFmpeg从入门到精通>以及雷霄骅博士博客总结写的入门心得体会. 官方文档资料 FFmpe ...

  2. mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记

    mysql 1.创建数据库 create database database_name; 2.查看数据库 show database_name; 3.选择数据库 use database_name; ...

  3. Mybatis从入门到精通读书笔记

    Mybatis从入门到精通 resultMap resultMap简介 resultMap resultMap简介 P25-P26

  4. python编程从入门到精通读书笔记(基础知识)

    第一部分:基础知识 学习python想要做的软件  1.开机答题软件,(电脑一开机的输入密码,改为答题,初步设定为选择题,答对了才可以进入.)  2.   第二章 2.1第一个程序:  print(& ...

  5. oracle 9i从入门到精通读书笔记2

    第二章:PL/SQL基础  2.1 PL/SQL程序结构 2.1.1 PL/SQL块的类型 所有的PL/SQL程序都是以块作为基本单位,以及都是由块组成的. 这些块可以是按顺序出现的,也可以是嵌套的 ...

  6. 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)

    目的 父子维度的不同之处在于处于其包含了一个基于递归关系(Recursive relationship)的层次关系,比如,上级和下级雇员的层次结构关系是典型的递归关系.在一线工作的雇员会有一个主管,而 ...

  7. php 到精通 书,PHP从入门到精通——读书笔记(第20章:Zend Framwork框架)

    第二十章:Zend Framwork 框架 1:概述 2:Zend Framwork 环境搭建1)环境配置:使用ZF框架进行项目开发,首先需要对PHP运行环境进行配置,从而使整个运行环境能够支持ZF的 ...

  8. 《分析服务从入门到精通读书笔记》第一章、维度数据仓库(4)

    简介 商业智能系统将维度数据仓库作为数据存取层.数据仓库存储在关系型数据库管理系统(RDBMS)中,打一个非常简单的比方,你可以将关系数据库简单地想作一系列的表格.每个表格有行和列,就行Excel电子 ...

  9. HTML5 从入门到精通读书笔记

    此书太水, 没什么有营养的内容. HTML5中新添加的 thead, tbody, tfoot 为语义化标签, 没什么实际效果. table 中元素的 colspan 和 rowspan 用来设定单元 ...

  10. 《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)

    目的 学习一些商业智能的基本概念,如属性.层次结构和维度 数据分析中的属性 假设如果你是AWC公司的总经理,希望了解公司的业绩,于是从业务人员那里得到一份报表 表1.1 AWC公司业绩     42  ...

最新文章

  1. 工业互联网 — Overview
  2. Endpoint 理解
  3. cuda profiler使用
  4. MySQL—查询某时间范围的数据
  5. Git命令集十三——快照操作
  6. jenkins安装 新建节点(5)
  7. linux 磁盘科隆,上海第二工业大学嵌入式操作系统B复习(无答案版)
  8. swing 显示文件下文件_Linux 文件权限详解
  9. 《javascript高级程序设计》第八章 The Browser Object Model
  10. 四种实时操作系统的分析比较
  11. 迅雷2019校园招聘 内推码
  12. Microsoft sqlserver2000如何导入.mdf格式的数据库文件
  13. Photoshop如何调整证件照背景色
  14. 基于知识图谱的问答系统入门之—NLPCC2016KBQA数据集
  15. 新篇章 每周分享第22期 (20180910~20180917)
  16. 答:本科生写论文对考研有用吗?
  17. 计算机系统原理实验——微程序控制器
  18. CentOS curl命令详解
  19. 游戏运营数据解读之----ARPU[国外称之为ARPPU]
  20. 图形验证码+短信验证码【Java应用实例】

热门文章

  1. MyEclipse10 离线图文安装SVN插件教程
  2. HTML5 audio
  3. 实现远程访问局域网内的多台电脑
  4. windows系统上安装与使用Android NDK r8d(二)
  5. 郁闷,两个伤脑筋的power script 问题
  6. 最新LAMP源码搭建网站平台PHP5.5.1 + Apache2.4.6 + mysql5.6.12
  7. 【原】opencv中cvCopy()和cvCloneImage()的区别:
  8. 创建自定义主机头的网站集
  9. SQL 2005数据库函数基本应用
  10. 使用Spring Session和Redis解决分布式Session跨域共享问题