官术网_书友最值得收藏!

Returning multiple values

Lua has a unique feature that many traditional languages don't, multiple return values. This feature allows one function to return multiple values. To return multiple values, assign the result of the function to a list of variables separated by commas.

For example, you could write a function that takes a number for an argument and returns both the squared and cubed values of that number:

-- Declare the function
function SquareAndCube(x)
squared = x * x
cubed = x * x * x
return squared, cubed
end

-- Call the function
s, c = SquareAndCube(2)
print ("Squared: " .. s) -- will print: Squared: 4
print ("Cubed: " .. c) -- will print: Cubed: 8

Like with function arguments, the number of values a function returns does not have to match the number of variables it is assigned to. What happens if you return two values, but try to assign them to three variables? The extra variables will have a default value of nil:

s, c, q = SquareAndCube(2) -- Call the same function
print ("Squared: " .. s) -- will print: Squared: 4
print ("Cubed: " .. c) -- will print: Cubed: 8
print ("Quartic: " .. tostring(q)) -- will print: Quartic: nil

Similarly, you can return two values and try to assign them to a single variable. In this case, the first value is assigned and the rest of the variables are discarded. The following code demonstrates this:

square = SquareAndCube(2) -- Call the same function
-- rest of results are discarded
print ("Squared: " .. square) -- will print: Squared: 4
主站蜘蛛池模板: 桑日县| 永清县| 玛曲县| 文山县| 岳西县| 海安县| 平阳县| 馆陶县| 彰化市| 河东区| 邳州市| 榆树市| 乌鲁木齐县| 英超| 长宁县| 淅川县| 石台县| 晋城| 新和县| 老河口市| 胶州市| 景德镇市| 永福县| 明星| 将乐县| 合作市| 兖州市| 昔阳县| 开鲁县| 辽阳县| 水富县| 奇台县| 阿图什市| 武义县| 华蓥市| 遵义市| 正蓝旗| 海城市| 东宁县| 茶陵县| 徐州市|