曲径通幽论坛

标题: 函数的多重返回值 [打印本页]

作者: beyes    时间: 2014-11-23 23:55
标题: 函数的多重返回值
假设有下面的函数:
  1. function ReturnArgs(Arg1, Arg2, Arg3)
  2.     return Arg1, Arg2, Arg3
  3. end
复制代码


比较下面的例子:
  1. print (ReturnArgs(1, 2, 3))
复制代码

输出结果:
1        2           3
  1. print(ReturnArgs(ReturnArgs(1, 2, 3)))
复制代码

输出结果:
1        2           3

返回值个数和接收变量的个数相等时:
  1. A, B, C = ReturnArgs("hello", "lua", "world")
  2. print(A, B, C)
复制代码

输出结果:
hello    lua    world



  1. print(1, ReturnArgs("a", "b", "c"))
复制代码

输出结果:
1   a    b    c
  1. print(ReturnArgs(1, 2, 3), "a")
复制代码

输出结果:
1    a

不像想象中的那样输出  1    2   3   a 。

  1. print(ReturnArgs(1, 2, 3), ReturnArgs("a", "b", "c"))
复制代码

输出结果:
1   a   b   c

规则:如果一个有多个返回值的函数(如 ReturnArgs())在一个指列表中作为最后一个表达式时,该函数的所有返回值都会被使用。反之,只有第一个返回值被使用,其余的返回值被忽略。再比较下面的代码:

  1. print (
  2.         ReturnArgs(1, 2, 3),
  3.         ReturnArgs(4, 5, 6),
  4.         ReturnArgs(7, 8, 9),
  5.         ReturnArgs(10, 11, 12)
  6.       )
复制代码

输出结果:
1    4    7    10    11    12

假如要强制值列表中的具有多返回值的函数只返回 1 个值,那么可以用括号将该函数括起来,这样可以达到强制其只返回一个值的目的,比如将上面的 ReturnArgs(10, 11, 12) 改为 (ReturnArgs(10, 11, 12)) 。










欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2