《Programming in Lua 3》读书笔记(五)
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》读书笔记(五)相关推荐
- FFmpeg从入门到精通读书笔记(1)
笔者才开始学习音视频开发,FFmpeg从入门到精通读书笔记系列主要是基于阅读刘歧.赵文杰编著的<FFmpeg从入门到精通>以及雷霄骅博士博客总结写的入门心得体会. 官方文档资料 FFmpe ...
- mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
mysql 1.创建数据库 create database database_name; 2.查看数据库 show database_name; 3.选择数据库 use database_name; ...
- Mybatis从入门到精通读书笔记
Mybatis从入门到精通 resultMap resultMap简介 resultMap resultMap简介 P25-P26
- python编程从入门到精通读书笔记(基础知识)
第一部分:基础知识 学习python想要做的软件 1.开机答题软件,(电脑一开机的输入密码,改为答题,初步设定为选择题,答对了才可以进入.) 2. 第二章 2.1第一个程序: print(& ...
- oracle 9i从入门到精通读书笔记2
第二章:PL/SQL基础 2.1 PL/SQL程序结构 2.1.1 PL/SQL块的类型 所有的PL/SQL程序都是以块作为基本单位,以及都是由块组成的. 这些块可以是按顺序出现的,也可以是嵌套的 ...
- 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)
目的 父子维度的不同之处在于处于其包含了一个基于递归关系(Recursive relationship)的层次关系,比如,上级和下级雇员的层次结构关系是典型的递归关系.在一线工作的雇员会有一个主管,而 ...
- php 到精通 书,PHP从入门到精通——读书笔记(第20章:Zend Framwork框架)
第二十章:Zend Framwork 框架 1:概述 2:Zend Framwork 环境搭建1)环境配置:使用ZF框架进行项目开发,首先需要对PHP运行环境进行配置,从而使整个运行环境能够支持ZF的 ...
- 《分析服务从入门到精通读书笔记》第一章、维度数据仓库(4)
简介 商业智能系统将维度数据仓库作为数据存取层.数据仓库存储在关系型数据库管理系统(RDBMS)中,打一个非常简单的比方,你可以将关系数据库简单地想作一系列的表格.每个表格有行和列,就行Excel电子 ...
- HTML5 从入门到精通读书笔记
此书太水, 没什么有营养的内容. HTML5中新添加的 thead, tbody, tfoot 为语义化标签, 没什么实际效果. table 中元素的 colspan 和 rowspan 用来设定单元 ...
- 《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)
目的 学习一些商业智能的基本概念,如属性.层次结构和维度 数据分析中的属性 假设如果你是AWC公司的总经理,希望了解公司的业绩,于是从业务人员那里得到一份报表 表1.1 AWC公司业绩 42 ...
最新文章
- 工业互联网 — Overview
- Endpoint 理解
- cuda profiler使用
- MySQL—查询某时间范围的数据
- Git命令集十三——快照操作
- jenkins安装 新建节点(5)
- linux 磁盘科隆,上海第二工业大学嵌入式操作系统B复习(无答案版)
- swing 显示文件下文件_Linux 文件权限详解
- 《javascript高级程序设计》第八章 The Browser Object Model
- 四种实时操作系统的分析比较
- 迅雷2019校园招聘 内推码
- Microsoft sqlserver2000如何导入.mdf格式的数据库文件
- Photoshop如何调整证件照背景色
- 基于知识图谱的问答系统入门之—NLPCC2016KBQA数据集
- 新篇章 每周分享第22期 (20180910~20180917)
- 答:本科生写论文对考研有用吗?
- 计算机系统原理实验——微程序控制器
- CentOS curl命令详解
- 游戏运营数据解读之----ARPU[国外称之为ARPPU]
- 图形验证码+短信验证码【Java应用实例】
热门文章
- MyEclipse10 离线图文安装SVN插件教程
- HTML5 audio
- 实现远程访问局域网内的多台电脑
- windows系统上安装与使用Android NDK r8d(二)
- 郁闷,两个伤脑筋的power script 问题
- 最新LAMP源码搭建网站平台PHP5.5.1 + Apache2.4.6 + mysql5.6.12
- 【原】opencv中cvCopy()和cvCloneImage()的区别:
- 创建自定义主机头的网站集
- SQL 2005数据库函数基本应用
- 使用Spring Session和Redis解决分布式Session跨域共享问题