lua中的local name = value或者0是什么意思?
2019-1-29 3:52:45
收藏:0
阅读:139
评论:1
请问下面这段代码是做什么的?
local name = value or 0
请告诉我它的作用是,如果为nil则使其为0,如果不为nil则使其为value。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

简短回答
是的
长答案
你是正确的。当其他语言逻辑运算符返回
true或false时,Lua 和其他一些语言会做一些更聪明的事情:当
or的第一个参数为 truthy 时,它会计算为该值,否则它将计算为第二个参数。并且同样适用于另一种情况:如果它的左边为 falsey,则它计算为左边的值,否则它计算为 RHS。从逻辑上讲,这意味着,如果任一操作数为真值,则
or计算为 truthy,如果任一操作数是 falsey,则and计算为 falsey。这经常被用作以下代码的等效代码:
if value then name = value else name = 0 end这实际上是相同的。还经常使用这种方式为变量分配默认值,如下所示:
function call(name) name = name or "you" print("嘿 "..name.."! 过来一下!") end请注意,这不起作用:
function alarm(real) real = real or true print "ALAAARM!" if real then print "This is NOT a drill!" end end alarm(false)这将始终打印“ALAAARM!”“This is NOT a drill!”,因为
false被评估为 falsey,所以or语句评估为其 RHS,即true。在这个特定的例子中,你必须明确检查参数是否为 nil。-- ... real = (real == nil) and true or real -- ...这将按预期工作,因为只有在
real == nil时,and语句才会计算为true,因此or语句计算为其 LHS。如果real == nil为false,则and计算为该值,因此 or 语句计算为其 RHS(因为其 LHS 为false)。值得一提的是,
and和or都是短路的。这意味着:function foo(bar) print(bar) return bar end io.write "First: " local A = foo(nil) or foo(false) io.write "Second: " local B = foo(true) or foo(true)这将在前两行打印“First: nil false”,但在第三行上打印“Second: true”。最后一次调用
foo甚至没有被执行,因为此时or语句已经知道要返回其左操作数。