如何解决回退表是 lua 中的常见做法吗?
我需要编写一些 Lua 代码,但我有 C 背景,一些常见的实践和编程策略对我来说似乎不寻常。也就是说,我写了一些代码来说明我遇到的问题:
local someFunction(myName)
local fallbackTable = {name = ""}
local myTable = getTableOrReturnNil(someArgument) or fallbackTable
local otherName = myTable["name"]
--other code that is irrelevant
end
我的问题专门针对 local myTable = getTableOrReturnNil(someArgument) or fallbackTable
行。据我了解,如果 fallbackTable
的返回值返回 nil,则此表达式的计算结果为 getTableOrReturnNil()
。值得一提的是,我无法控制函数 getTableOrReturnNil()
。这是一种常见的做法还是有更标准的方法来安全地执行 local otherName = myTable["name"]
而不必担心 myTable
是否为零。我可以诉诸于使用 if 链,但如果可能,我宁愿避免这种情况。
解决方法
函数中的回退值是,尤其是对于可选参数。也许不是整个表那么频繁,但也并非闻所未闻。
local function clamp( value,minimum,maximum )
minimum = minimum or 0
maximum = maximum or 255
return math.min( math.max( value,minimum ),maximum )
end
print( clamp( -50 ),clamp( 50 ),clamp( 500 ) )
0 50 255
对于表格,当值不存在时,您更有可能看到使用了 metatables。
mytable = { name = 'nomer' }
meta = { __index = function( tbl,key ) return 'misnomer' end }
setmetatable( mytable,meta )
print( mytable['name'],mytable['noname'] )
用词不当
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。