1。 Lua函数可以接受变长数目的参数,和C语言类似,在函数的参数列表中使用(...)表示函数可以接受变长参数

lua函数将参数存放在一个table中,例如arg,那么#arg可以获得参数的个数

function func_no_p(...)local arg={...}for k,v in pairs(arg} doprint(v ..",")endprint("输入参数个数:".. #arg)endfunc_no_p(1,2,34,1,"string")

2. 运算符方面需要注意的就是 不等式符号和matlab一样 ~=,还有各种运算符的优先级

^
not  - (unary) --这里是符号
*         /
+        -
..
<        >        <=        >=        ~=        ==
and
or

除了^ 和 .. 外所有的二元运算符都是左连续的。

这里要特别注意的是 x^y^2 等价于 x^(y^2)

3. 转义字符串

转义字符   意义          ASCII码    
\a 响铃           007
\b 退格(BS),将当前位置移到前一列   008
\f   换页(FF),将当前位置移到下页开头 012
\n     换行(LF) 010
\r 回车(CR) 013
\t 水平制表符 009
\v    垂直制表 011
\\ \ 092
\' ' 039
\" " 034
\0 空字符 000
\ddd 八进制 三位八进制
\xhh 十六进制 二位十六进制

4. 字符串的一些重要操作

string.upper(argument)

string.lower(argument)

string.gsub(mainString,findString,replaceString,num) --字符串替换

  其中num表示要替换的次数,如果num大于等于包含的fingString次数,或者num省略就全部替换,否则从前往后替换num个

  > string.gsub("Hello",'l','ee')

  输出 Heeeeeo 2,两个值

string.find(str,substr,[init,[end]])

  其中[ ]是可选参数表示寻找区间,返回两个值表示子串在原串中起始和终止index

  > string.find("Lua is aa new wapon",'ea',5,10)

  输出 16     17

string.reverse(arg)

string.format(...)

  格式化字符串,例如string.format('the value is %7.0d',4)  输出占位7位的4

string.char(arg),string.byte(arg[,int])

  将整型数字转变成字符串连接,和将字符串arg中的首字符或者int指定字符转换成整数值

  > string.char(97,65,48) 输出 aA0

  >string.byte("Hello") 输出72

string.len(arg) 和#arg相同功能,统计arg的长度

string.rep(string,n) 拷贝n次字符串

..  字符串的连接

5. Lua数组

Lua中一维数组和多维数组都是table,只不过多维数组中table的每一个索引还对应着table

需要注意的是table的索引可以自己设定值,那么就不限定从0还是从1开始计数了,但默认情况下是从1开始计数的。

如果使用不存在的索引或者超出索引范围的话,返回nil

二维数组实例

arr={}
for i=1,3 doarr[i]={}for j=1,3 doa[i][j]=i*jend
endfor i=1,3 dofor j=1,3 doprint(arr[i][j])end
end-- 另一种索引
arr={}
maxRows=3
maxCols=3
for row=1,maxRows dofor col=1,maxCols doarr[row*maxCols+col]=row*col     -- 注意这里并不是从0或者1开始索引的end
endfor row=1,maxRows dofor col=1,maxCols doprint(arr[row*maxCols+col])end
end

6. 迭代器

迭代器包括无状态迭代器和多状态迭代器,迭代器一般由迭代函数,‘状态常量’和‘控制变量’组成,其中状态常量和控制常量是迭代函数的输入参数

迭代函数往往输出两个值: 控制参数和该控制参数下的函数值,比如我们定义如下的迭代器

function tabSearch(tab1, curIdx)MaxCount = #tab1if curIdx<maxCount thencurIdx=curIdx+1return curIdx, tab1[curIdx]end
end
tab1={1,2,3,4,5}
for k,v in tabSearch, tab1,0 doprint(v)
end    

ipairs实现方式

function iter(a,i)i=i+1local v=a[i]if v thenreturn i,vend
endfunction ipairs(a)return iter, a, 0
end

其实无状态和多状态迭代器的差别并不大,无状态迭代器的参数只有状态常量和控制变量,就好比数组中的最大长度和索引;而多状态迭代器需要在迭代函数中传递许多参数,因此可以利用数组作为状态常量输入,如上面的tabSearch迭代函数

7. table操作 (首先lua有垃圾自动回收机制)

table.concat(table,[,sep [,start [,end]]]): 其中sep定义了连接的分隔符,start,end定义了连接的后面的table中范围

table.insert(table,[pos,] value ])

table.remove(table[,pos])

table.sort(table[,comp]):对指定的table升序排列

  

days={'Mon',"Tue","Wed","Thu","Fri"}
string1="排序前:"
for k,v in ipairs(days) dostring1=string1.. v.." "
end
print(string1)table.sort(days)
string2="排序后:"
for k,v in pairs(days) dostring2=string2..v.." "
end
print(string2)

转载于:https://www.cnblogs.com/YiXiaoZhou/p/6275458.html

Lua学习笔记3. 函数可变参数和运算符、转义字符串、数组相关推荐

  1. lua学习笔记之函数

    1.概述 函数只有一个参数,并且参数类型是字符串字面量或者表对象构造器,则括号是可选的 调用一个函数,可以传与函数定义数不相等个数的参数.lua会调整参数个数为函数定义的参数个数,将多余的参数丢弃,将 ...

  2. linux shell学习笔记(二) 变量和运算符

    1.什么是shell变量?本地变量.环境变量.变量替换(显示变量).位置变量.标准变量.特殊变量.影响变量的命令 2.本地变量:本地变量在用户现在的shell生命期的脚本中使用 variable-na ...

  3. Lua 学习笔记(一)

    Lua学习笔记 1.lua的优势 a.可扩张性     b.简单     c.高效率     d.和平台无关 2.注释 a.单行注释 --        b.多行注释 --[[  --]] 3.类型和 ...

  4. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  5. 微信小程序连接物联网(二):NodeMCU Lua学习笔记

    索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...

  6. lua 学习笔记---游戏开发第一步

    lua 学习笔记-从数组开始 数组 数组大小范围不一定需要在声明是确定,可以改变 一维数组 例 > array = {"Lua", "lualu"} &g ...

  7. Python学习笔记12_函数

    Python学习笔记12_函数 文章目录 Python学习笔记12_函数 1.函数定义 2.函数调用 3.函数的参数 3.1.可更改对象和不可更改对象参数 3.2.必需参数(位置参数) 3.3.关键字 ...

  8. Lua学习笔记6:C++和Lua的相互调用

    曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项目啦,只是为什么 ...

  9. Python学习笔记:函数(Function)

    Python学习笔记:函数(Function) 一.函数基本概念 函数是Python里组织与重用代码最重要的方法.一般来说,如果你期望多次重复相同或相似的代码,写一个可重用的函数可能是值得的.函数通过 ...

最新文章

  1. poj1603(Flody算法)
  2. Zabbix之监控Mysql性能
  3. Spring(19)——Profile(二)
  4. python json dumps与loads
  5. mac+修改+ssh文件夹权限_用SSH指令批量修改文件夹 文件权限和拥有者
  6. Visual Media Server – 2 - 下载模块草图
  7. PHP解析URL并得到URL中的参数
  8. windows版本的redis
  9. es6 export 命令
  10. android R 文件 丢失的处理 如何重新生成
  11. 输出四位完全平方数_leetcode279_go_完全平方数
  12. 一个普通摄像头就能让二次元老婆“活”过来,网友:求收费
  13. android 渠道排名,八大安卓渠道6月数据报告总汇
  14. 棋牌漏洞游戏反汇编译破解修改透视案例分析
  15. iPhone投屏家中设备有哪些方法 iPhone投屏失败是怎么回事如何解决
  16. java实现登陆验证码
  17. jsonObject.getString()解析任意字段均可强转为string
  18. 信创-东方通和达梦适配
  19. Unity 编辑器开发实战【Custom Editor】- FSM Editor
  20. 机器学习入门:准备知识笔记(seaborn及案例)

热门文章

  1. GridView网格控件
  2. 网格分割后,边界点的获取方法
  3. jquery 设置 select 默认值方法
  4. CUDA计算向量内积的程序(源自CUDA范例编程)
  5. 【体系结构】Oracle的各种文件及其重要性
  6. 在线2-36任意进制转换工具
  7. nginx开机启动脚本
  8. Ext JS isField为空或不是对象问题的解决
  9. innodb的锁时间
  10. linux 下挂载光驱