• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua 函数参数 & 默认实参

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【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     else
10         print('arg1 is false or nil')
11     end
12 
13     if arg2 then
14         print('arg2 value : ' .. (type(arg2) == 'boolean' and 'true' or arg2) .. '\n')
15     else
16         print('arg2 value : false\n')
17     end
18 
19 end
20 
21 -- test
22 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 : 123
31 arg2 value : true
32 
33 arg1 value : 456
34 arg2 value : abc
35 
36 arg1 value : lua
37 arg2 value : false
38 
39 arg1 value : web
40 arg2 value : true
41 
42 arg1 value : study
43 arg2 value : true
44 --]]

(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++语言的默认实参机制。可参见随笔《为什么C++函数的形参默认值从最末一个赋值?

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

(3)总结:

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

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转]使用C编写Lua模块发布时间:2022-07-22
下一篇:
Lua模式匹配发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap