Lua 基础 -- 学习笔记
标签(空格分隔): Lua
1. Lua可以一次性给多个变量赋值
- 变量比赋值多,多的变量就赋值nil
- 变量比赋值少,多的赋值舍弃
local a, b, c = 1, 2, 3
print( a, b, c)
local a, b, c = 1, 2
print(a, b, c)
local a, b, c = 1, 2, 3, 4
print(a, b, c)
输出:
1 2 3
1 2 nil
1 2 3
2. lua代码块
do ...
end
3.lua控制语句
3.1 条件判断
if ... then
...
elseif ... then
...
else
...
end
3.2 循环迭代
3.2.1 repeat ... until true --> 条件成立退出
local a = 1
repeat
print(a)
a = a + 1
until a >= 2
输出:1
3.2.2 while ... do ... end --> 条件不成立退出
local i = 1
while i < 3 do
print(i)
i = i + 1
end
输出:
1
2
3.2.3 for from, to, step do ... end step可以省略,默认不写的话是每次加1
for i=1, 2 do
print(i)
end
-- 上下程序作用一样
for i=1, 2, 1 do
print(i)
end
输出:
1
2
1
2
3.2.4 迭代函数ipairs 和pairs,ipairs只针对有序表,其中ipairs循环中如果遇到nil,循环就结束了
local list = {1, 2, 3, a = 12, b = 14}
for i,v in ipairs(list) do
print(i, v)
end
输出:
1 1
2 2
3 3
local list = {1, 2, 3, a = 12, b = 14}
for i,v in pairs(list) do
print(i, v)
end
输出:
1 1
2 2
3 3
a 12
b 14
local list = {1, nil, 2, 3, a = 12, b = 14}
for i,v in ipairs(list) do
print(i, v)
end
输出:
1 1
4. function
4.1 闭包函数
function closureFunction(x)
return function ()
x = x + 1
print(x)
end
end
local f = closureFunction(100)
print(f())
print(f())
print(f())
local ff = closureFunction(200)
print(ff())
输出:
101
102
103
201
只要f没有销毁,x值就变相的成为全局变量(相对于f调用),如果是重新调用closureFunction还是原来的值
4.2 函数尾调用
- 形式:就是在函数的最后返回处返回函数
- 作用:可以解决例如递归时堆栈过大问题,因为尾调用的一个性质就是直接进入尾调用函数的堆栈并且抛弃现在在使用函数的堆栈,也就是说,进入尾调用函数后是不会恢复上一个函数的堆栈的
function closureFunction(x)
return function ()
x = x + 1
print(x)
end
end
local function recursionFunction( x )
if x > 1 then
return recursionFunction(x - 1)
else
return print('done')
end
end
recursionFunction(99999)
4.3 函数的不定参数
function functionName( ... )
---[=[
print(#arg)
print(unpack(arg))
--[[ local list = {...}
print(#list)
print(unpack(list))
for i=1,#list do
print(list[i])
end
--]]
--]=]
end
functionName(1, 2, 3)
end
以上是不定参数的两种不同读取参数方法,#是用来获取字符长度或者表长度(只限于有序表)
4.4 .和:的区别
local list = {}
function list.say( helloworld )
print(helloworld)
end
list.say("helloworld")
local list = {}
function list:say( helloworld )
print(helloworld)
end
list:say("helloworld")
list.say("do","helloworld")
区别在于 函数参数开始时,:比.多传递了一个参数
:定义的函数可以用.来访问,.定义的函数如果用:访问一般会产生问题
5. lua中的三目运算实现
local a = 5
a = a > 4 and a or 1
print(a)
输出:
5
注意:a不能是nil或者false
Lua 基础 -- 学习笔记的更多相关文章
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- lua本学习笔记功能
Lua本学习笔记功能 1. 函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_ ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
随机推荐
- Storm-0.9.0.1安装部署 指导
可以带着下面问题来阅读本文章: 1.Storm只支持什么传输 2.通过什么配置,可以更改Zookeeper默认端口 3.Storm UI必须和Storm Nimbus部署在同一台机器上,UI无法正常工 ...
- 《JS中的面向对象技术》
内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery.面向对象是一种通用思想,并 ...
- JS面向对象基础2
根据之前看了面向对象相关的视频,按照自己的理解,整理出相关的笔记,以便自己的深入理解. javascript面向对象: 突发奇想,注意:===全等:是指既比较值,也比较类型(题外话,可忽略) 逻辑运算 ...
- PHP登录程序
[摘自网络,参考学习] 添加了MD5加密 <?php error_reporting(0); $mysql_servername = ""; //主机地址 $mysql_us ...
- Java 编码 字符集
Java 编码 字符集 @author ixenos 1. 字符集 a) 字符集建立了两字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射. b) 为了兼容其它命名, ...
- Java 集合 散列表hash table
Java 集合 散列表hash table @author ixenos 摘要:hash table用链表数组实现.解决散列表的冲突:开放地址法 和 链地址法(冲突链表方式) hash table 是 ...
- Activity的四中启动模式的应用场景。
1,standard 默认情况下的启动模式,队列排序,linked 2,singleTop ,任务栈栈顶只有一个实例.如果Activity A在栈顶,就不会在A 的上面创建新的 Activity A ...
- 统计英文文章中各单词的频率,打印频率最高的十个单词(C语言实现)
一.程序思路及相关代码 首先打开文件,代码如下 FILE *fp; char fname[10]; printf("请输入要分析的文件名:\n"); scanf("%s ...
- 【codevs】1860 最大数
1860 最大数 题目描述 Description 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 输入描述 Input Description 第一行一个正整数n. ...
- xml 和json 数据格式及解析
来源:http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”.任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的 ...