博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua 函数参数 & 默认实参
阅读量:4685 次
发布时间:2019-06-09

本文共 1396 字,大约阅读时间需要 4 分钟。

【1】Lua函数,默认实参

习惯了其他语言(如C++)的默认实参,利用Lua语言的过程中,发现没有默认实参这种机制。

所以,自己模拟了一个满足业务需求的带默认实参的函数。

(1)示例如下:

1 local function func(arg1, arg2) 2  3     if nil == arg2 then 4         arg2 = true 5     end 6  7     if arg1 then 8         print('arg1 value : ' .. arg1) 9     else10         print('arg1 is false or nil')11     end12 13     if arg2 then14         print('arg2 value : ' .. (type(arg2) == 'boolean' and 'true' or arg2) .. '\n')15     else16         print('arg2 value : false\n')17     end18 19 end20 21 -- test22 func('123')23 func('456', 'abc')24 func('lua', false)25 func('web', true)26 -- func(,true)27 func('study')28 29 --[[30 arg1 value : 12331 arg2 value : true32 33 arg1 value : 45634 arg2 value : abc35 36 arg1 value : lua37 arg2 value : false38 39 arg1 value : web40 arg2 value : true41 42 arg1 value : study43 arg2 value : true44 --]]

(2)分析过程:

    如果调用函数时,如果没有实参值,lua语言会认为这个实参值为nil。

    利用Lua语言的这一特性,可以模拟实现默认实参函数。

    2.1 如上22行

       对func的调用时,没有为第二个参数arg2赋值,遵循Lua语言的语法,说明第二个参数的值为nil。

       在函数内部对nil值进行判断,若没有赋实参值,估可以认为欲利用默认实参值,将默认实参值赋值于参数2即可。

    2.2 如上24行

       对func的调用时,为第二个参数arg2赋值false,遵循Lua语言的语法,说明第二个参数的值为false。

       在函数内部对nil值进行判断,既然已赋实参值,那么肯定不是nil,其他逻辑直接使用实参值即可。

    2.3 如上25行,与24行同理。

    2.4 如上26行,不允许此种写法!说明Lua语言同其他语言一致,遵循同样的原则,如果参数有”默认实参值“,只允许从最后的参数赋值。

       若不理解此条,可以学习一下C++语言的默认实参机制。可参见随笔《》

    2.5 如上27行,与22行同理。

(3)总结:

    穷则思,思则变,变则通,通则达。

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

转载于:https://www.cnblogs.com/Braveliu/p/10737235.html

你可能感兴趣的文章
数据库插入数据乱码问题
查看>>
OVER(PARTITION BY)函数用法
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
html td 限制 高度 和 宽度
查看>>
mysql查询一个表的字段,添加或修改到另外一个表的数据
查看>>
CL.exe的 /D 选项, Preprocessor Macro预处理器宏定义
查看>>
[Pytorch]Pytorch中tensor常用语法
查看>>
ZOJ 1008 Gnome Tetravex
查看>>
Jenkin远程部署Tomcat8.5总结
查看>>
编写Linux中sh文件执行时出现莫名字符的问题
查看>>
简单数论(一)
查看>>
Populating Next Right Pointers in Each Node
查看>>
CXF和Axis的比较【转】
查看>>
设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名...
查看>>
Ubuntu 18.04 安卓调试小米
查看>>
MyBatis学习总结_06_调用存储过程
查看>>