























假设myfunc已经在其它地方定义,你觉得以下两段代码作用一样吗?
local t = {}
local item = myfunc()
table.insert(t, item)
item = nil
local t = {}
table.insert(t, myfunc())
代码一把函数的结果存放在临时变量里再作为参数传给其它函数,代码二直接将函数返回值作为参数传给其它函数。看上去,代码二比代码一简短了一些,少用了个变量名。
可是,如果myfunc返回多个值的话,代码二将不能正确运行,因为myfunc的所有返回值均会传递给table.insert。和其它语言完全不一样。我想,这个应该是「真正的」多返回值吧?——它返回的不是像其它语言那样的是一种复合类型的值,而真真正正的是多个值,以一种超乎直觉的方式存在着。
所以,要么总是通过赋值来指定需要的返回值,要么不要给已有函数增加新的返回值。我倾向于前者,因为,你记得你所有用到的函数的返回值数目吗?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。