Lua function "named args" implement by table type

简介:
当一个lua函数的参数个数非常多时, 我们在调用一个函数时可能会忘记参数的顺序. 例如
function divide(a,b)
  return a/b
end

调用这个函数时, 如果把输入的参数搞反了, 结果是完全不一样的.
> print(divide(1,2))
0.5
> print(divide(2,1))
2

参数越多, 越容易搞错顺序.

使用table作为函数参数, 有一个好处是, 不需要记忆函数参数的顺序, 只要TABLE的元素内容一样就可以了, 例如
> function divide1(args)
>>   return args.a/args.b
>> end
> print(divide1 {a=1, b=2})
0.5
> print(divide1({a=1, b=2}))
0.5
> print(divide1({b=2, a=1}))
0.5

输入的顺序无所谓, 只要元素对应的值一样就可以了.



目录
相关文章
|
存储 Java C语言
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
110 0
|
2月前
|
Linux Python
【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend'
ERROR: Error: No module named '_cffi_backend', Cannot find module. Please check the requirements.txt file for the missing module.
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
95 1
|
4月前
|
关系型数据库 MySQL Linux
【Azure 应用服务】[App Service For Linux(Function) ] Python ModuleNotFoundError: No module named 'MySQLdb'
【Azure 应用服务】[App Service For Linux(Function) ] Python ModuleNotFoundError: No module named 'MySQLdb'
|
7月前
|
SQL HIVE
数仓面试重灾区之-Generic User-defined Table Generating Function(UDTF)
数仓面试重灾区之-Generic User-defined Table Generating Function(UDTF)
49 0
|
XML Java 数据格式
【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法
lua遍历table的方式、运算符、math库、字符串操作方法
721 0
【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法
|
关系型数据库 MySQL 数据库
View ‘information_schema.SCHEMATA‘ references invalid table(s) or column(s) or function(s) or define
View ‘information_schema.SCHEMATA‘ references invalid table(s) or column(s) or function(s) or define
250 0
|
C++
[✔️]lua中的function,在c++进行callback
[✔️]lua中的function,在c++进行callback
190 0
|
C# 数据库
Lua Table转C# Dictionary
Lua Table转C# Dictionary
141 0