LUA学习笔记(第5-6章)
x = a or b
如果a为真则x = a
如果a为假则x = b
print(a .. b)
任何非nil类型都会被连接为字符串,输出
多重返回值
local s,e = string.find("Hello World", "Wo")
print(s .. " : " .. e)
自定义函数
function getMax(arr)
local maxValue, maxPos
maxValue = arr[1]
maxPos = 1
for i=1,#arr do
if arr[i] > maxValue then
maxValue = arr[i]
maxPos = i
end
end
return maxPos, maxValue
end print(getMax{20, 50, 10, 40, 30})
unpack函数
print(unpack{20, 50, 10, 40, 30})
它接受一个数组作为参数,并从下标1开始返回数组的所有元素
变长参数
function add( ... )
local s = 0
for i,v in ipairs{ ... } do
s = s + v
end
return s
end
print(add(1, 2, 3, 4))
返回所有实参
function add( ... )
return ...
end
print(add(1, 2, 3, 4))
通常一个函数在遍历其变长参数时只需要使用表达式{ ... }
但是变长参数中含有nil则只能使用函数select了
select("#", ...)返回所有变长参数的总数,包括nil
print(#{1, 2, 3, 4, 5, nil}) -->5
print(select("#", 1,2,3,4,5,nil)) -->6
具名实参
函数调用需要实参表和形参表进行匹配,为了避免匹配出错,而使用具名实参。
例:
function Window( options )
_Window(options.title,
options.x or 0,
options.y or 0,
options.width, options.height,
options.background or "white",
options.border
)
end w = Window{x = 0, y = 0, width = 300, height = 200,
title = "Lua", background = "blue",
border = true
}
深入函数
LUA中函数与所有其他值一样都是匿名的:当讨论一个函数时,实际上是在讨论一个持有某函数的变量。
a = {p = print}
a.p("Hello")
print = os.date()
a.p(print)
一个函数定义实际就是一条语句(赋值语句)
将匿名函数传递给一个变量
foo = function() return "Hello World" end
print(foo())
等价于我们常见的
function foo()
return "Hello World"
end
匿名函数
arr = {
{name = "A", score = 99},
{name = "B", score = 95},
{name = "C", score = 96},
{name = "D", score = 97},
} table.sort(arr, function (a, b) return (a.name < b.name) end)
for i,v in ipairs(arr) do
print(v.name)
end
LUA学习笔记(第5-6章)的更多相关文章
- LUA学习笔记(第1-4章)
需要一种简单的脚本语言来代替批处理,它需要足够小巧,同时功能上也应该足够强劲,自然选择了LUA语言. 第一章 Hello World print('Hello World') print(" ...
- LUA学习笔记(第18-20章)
数学库 print(math.pi)-->π print(math.huge)-->Lua中表示的最大数字 --[[ 3.1415926535898 1.#INF ]] print(mat ...
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...
- 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回
<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
- 《深入Java虚拟机学习笔记》- 第13章 逻辑运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- 《深入Java虚拟机学习笔记》- 第14章 浮点运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- Lua 学习笔记(一)
Lua学习笔记 1.lua的优势 a.可扩张性 b.简单 c.高效率 d.和平台无关 2.注释 a.单行注释 -- b.多行注释 --[[ --]] 3.类型和 ...
随机推荐
- 百度DMA+小度App的蓝牙语音解决方案展示
前记 跟着百度也有一段时间了,经过一年多的努力,我们也做出了一些基于百度的语音助手的产品方案.下面就给大家秀一下我们做的产品.有类似需求的朋友可以多多交流.我们的合作方式十分灵活,可以卖芯片你自己 ...
- 小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 运维必会之MySQL篇
第一章 SQL语句 语言分类 1)DDL(data definition language)数据定义语言(create.alter.drop)管理基础数据例如:库.表 #<==运维要熟练, ...
- Python 中 unittest 单元测试框架中需要知识点
现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识 ...
- 1074 宇宙无敌加法器 (20分)C语言
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...
- oracle中使用pl/sql进行的文件读写操作
第一次知道,可以使用pl/sql来进行文件的读写操作,嘿嘿,简单的试了下可行. 基本步骤如下: SQL> conn sys/sys@orcl as sysdba 已连接. SQL> cre ...
- 【一起学源码-微服务】Feign 源码一:源码初探,通过Demo Debug Feign源码
前言 前情回顾 上一讲深入的讲解了Ribbon的初始化过程及Ribbon与Eureka的整合代码,与Eureka整合的类就是DiscoveryEnableNIWSServerList,同时在Dynam ...
- IDEA 配置及常用快捷键
常用快捷键 1.Ctrl+Alt+T 把选择的代码放入 try{} 或者 if{} 里 2.Ctrl+O 重写方法提示 3.Alt+回车 导包提示 4.Alt+/ 代码提示(默认不是这个,需要参照后文 ...
- C# 将Word转为PDF、XPS、Epub、RTF(基于Spire.Cloud.Word.SDK)
本文介绍通过调用Spire.Cloud.Word.SDK提供的ConvertApi接口将Word转换为PDF.XPS.Epub.RTF以及将Docx转为Doc格式等.调用接口方法及步骤参考以下步骤: ...
- P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小
P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...