首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有条件地同时分配多个变量?

如何有条件地同时分配多个变量?
EN

Stack Overflow用户
提问于 2021-12-31 21:25:58
回答 2查看 219关注 0票数 0

为什么这会起作用

代码语言:javascript
运行
复制
local a, b =
  true
  and 1, 2
   or 3, 4

print(a, b) --> 1  2

但这不是?

代码语言:javascript
运行
复制
local a, b =
  false
  and 1, 2
   or 3, 4

print(a, b) --> false  2

我怎么才能让它起作用?

EN

回答 2

Stack Overflow用户

发布于 2021-12-31 22:54:44

您似乎认为这些工作是这样的(实际上并不是有效的语法):

代码语言:javascript
运行
复制
local a, b = true and (1, 2) or (3, 4)
local a, b = false and (1, 2) or (3, 4)

但这不是他们的工作方式。它们真的很管用,就像你写的那样:

代码语言:javascript
运行
复制
local a, b = (true and 1), (2 or 3), 4
local a, b = (false and 1), (2 or 3), 4

只是巧合,你才得到了你想要的结果。您可以编写类似这样的东西,这将始终有效:

代码语言:javascript
运行
复制
local a, b
if false then
    a, b = 1, 2
else
    a, b = 3, 4
end
票数 1
EN

Stack Overflow用户

发布于 2022-01-01 08:36:17

代码语言:javascript
运行
复制
local a, b = true and 1, 2 or 3, 4

等于

代码语言:javascript
运行
复制
local a = 1 -- because true and 1 is 1
local b = 2 -- because 2 or 3 is 2

进一步

代码语言:javascript
运行
复制
local a, b = false and 1, 2 or 3, 4

等于

代码语言:javascript
运行
复制
local a = false -- because false and 1 is false
local b = 2 -- because 2 or 3 is 2

在这里没有实际需要使用多个产品。所以简单地使用

代码语言:javascript
运行
复制
local a = condition and 1 or 3
local b = condition and 2 or 4

代码语言:javascript
运行
复制
local a, b
if condition then
  a, b = 1, 2
else
  a, b = 3, 4
end

此外,使用常量作为条件值也是没有意义的。它总是会产生同样的结果,所以为什么不立即使用这个结果呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70545748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档