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.类型和 ...
随机推荐
- Linux常用命令大全(三)
Linux常用命令大全(三) 文件类型 普通文件(文本文件.数据文件.可执行的二进制文件) 目录文件 同上 差别:由成对的"I节点号.文件名"构成的列表 设备文件 (字符设备.块设 ...
- 大数据学习之路-phoenix
1.phoenix安装 ------------------ 1.安装phoenix a)下载apache-phoenix-4.10.0-HBase-1.2-bin.tar.gz 下载网址:htt ...
- 从头学pytorch(十五):AlexNet
AlexNet AlexNet是2012年提出的一个模型,并且赢得了ImageNet图像识别挑战赛的冠军.首次证明了由计算机自动学习到的特征可以超越手工设计的特征,对计算机视觉的研究有着极其重要的意义 ...
- echarts更改坐标轴文字颜色及大小
xAxis: { data: anameArr, axisLabel: { show: true, textStyle: { color: '#c3dbff', //更改坐标轴文字颜色 fontSiz ...
- 从源码角度来看BeanFactory和ApplicationContext的关系
大家好,我是小黑,这是年前的最后一篇推文,提前祝大家新年快乐~~ 这次我们从源码角度来聊聊BeanFactory和ApplicationContext的关系,讲一些网上文章不曾提到的点. 官方描述 先 ...
- 极简安装 TensorFlow 2.0 GPU
前言 之前写了几篇关于 TensorFlow 1.x GPU 版本安装的博客,但几乎没怎么学习过.之前基本在搞 Machine Learning 和 Data Mining 方面的东西,极少用到 NN ...
- [C++]最小生成树
1. 最小生成树定义 树是指没有环路的图,生成树就是指一个图上面删除一些边,使它没有环路. 最小生成树就是指生成树中边权之和最小的那一种. 上图的最小生成树就是这样: 2. Prim 算法 2.1. ...
- ST表竞赛模板
void RMQ_init(){//ST表的创建模板 ;i<n;i++) d[i][]=mo[i]; ;(<<j)<=n;j++) ;i+(<<j)-<n;i ...
- Java标签学习
今天早上看Java编程思想第四章控制执行流程,本来很简单的一些东西,但是突然看到了goto发现自己以前还真的没怎么用过,不过Java中对goto作为保留关键字,而是提供了一个叫标签的东西,我们一起来看 ...
- .net core2.2上传文件总结
总结一下.net core的上传文件操作,这里主要分上传到本地的也就是MVC的,另一种是上传到WebAPi的. 一.Web端 1.新建一个.net core mvc项目 2.这里的版本是.net co ...