使用Lua中的表进行多重赋值

这段代码:

function foo()
    return 1, 2, 3
end

bar = {}

bar = {a, b, c = foo()}

产生的结果是:

bar.a = nil
bar.b = nil
bar.c = 1

如何编写代码才能获得以下输出结果:

bar.a = 1
bar.b = 2
bar.c = 3

而不需要写类似以下代码:

function foo()
    return 1, 2, 3
end

bar = {}
a, b, c = foo()

bar = {a = a, b = b, c = c}
点赞
用户929510
用户929510
bar = {}
bar.a, bar.b, bar.c = foo()

foo() 的返回值按顺序赋值给 bar 中的属性 abc

2015-08-03 07:16:01
用户2349885
用户2349885
bar = {}
local abc = foo()
bar.a, bar.b, bar.c = abc, abc, abc

简单地使用 bar.a, bar.b, bar.c = foo() 只会将 bar.a 设为 foo() 的返回值,其余两个将会被设为 nil,因为它们分别被设为第二个和第三个返回值,而你只给了一个值。

2019-02-09 12:25:03
用户12498887
用户12498887

如果可能的话,让 foo() 返回一个格式正确的表格。

function foo()
    return {a = 1, b = 2, c = 3}
end

bar = foo()
2020-02-10 03:26:43