曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2604|回复: 0
打印 上一主题 下一主题

函数的多重返回值

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2014-11-23 23:55:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设有下面的函数:
  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)) 。





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-28 06:42 , Processed in 0.064056 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表