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

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
主站蜘蛛池模板: 措勤县| 社旗县| 宣城市| 神农架林区| 宁武县| 宁安市| 元朗区| 镇沅| 罗平县| 磐安县| 康马县| 宜昌市| 巨鹿县| 马龙县| 启东市| 富川| 榕江县| 建湖县| 宁陵县| 赤水市| 通道| 辽阳县| 平江县| 刚察县| 蒙阴县| 衢州市| 栖霞市| 马山县| 碌曲县| 河间市| 招远市| 上虞市| 荣成市| 东兴市| 溆浦县| 怀化市| 东源县| 林周县| 山阳县| 留坝县| 明光市|