Corona 中的函数和返回语句

Corona 中的函数和返回语句

在各种 Corona 支持渠道上提出了一个问题:“return 语句是什么,我什么时候需要使用它?” 在回答这个问题之前,您需要了解什么是函数以及 Lua 如何使用它们。

函数是可以重用的代码块。考虑更换汽车轮胎

  1. 从后备箱取出千斤顶、套筒扳手和备用轮胎
  2. 将套筒扳手放在螺母 #1 上
  3. 逆时针旋转直到螺母脱落
  4. 将螺母放在安全的地方
  5. 将套筒扳手放在螺母 #2 上
  6. 逆时针旋转直到螺母脱落
  7. 将螺母放在安全的地方
  8. 将套筒扳手放在螺母 #3 上
  9. 逆时针旋转直到螺母脱落
  10. 将螺母放在安全的地方
  11. 将套筒扳手放在螺母 #4 上
  12. 逆时针旋转直到螺母脱落
  13. 将螺母放在安全的地方
  14. 将套筒扳手放在螺母 #5 上
  15. 逆时针旋转直到螺母脱落
  16. 将螺母放在安全的地方
  17. 用千斤顶顶起汽车
  18. 拆下扁平轮胎
  19. 装上备用轮胎

等等。

计算机代码以线性方式执行。如果您要用计算机代码写出这个,您最终会多次重复自己。将螺母移除代码放入一个函数中更有意义。考虑以下伪代码

这会将我们的算法简化为

  1. 从后备箱取出千斤顶、套筒扳手和备用轮胎
  2. 对于每个 lugNutNumber
  3. removeLugNut( lugNutNumber)
  4. 用千斤顶顶起汽车
  5. 拆下扁平轮胎
  6. 装上备用轮胎

代码更加紧凑。它遵循一个主要的开发者原则,称为 DRY - 不要重复自己

函数可以在 Corona 应用程序中以多种方式使用。让我们看一个基本示例

此函数不需要任何信息。它使用一个现有的已定义对象:player,并将其 .x 位置递增 1。它不接受任何参数,也不将任何数据传递回调用代码。您可能会在另一个每时钟滴答运行一次的函数中使用它

由于您没有在括号内放置任何内容,因此您没有向该函数发送任何内容。但是您可以轻松地将信息传递给该函数。您可能希望使此函数更通用一些。您可以使用 moveObject 代替 movePlayer。您还可以提供速度

现在您知道如何将信息传递给函数了,那么如何取回信息呢?首先,并非所有函数都需要返回数据,但是当您这样做时,您可以使用 Lua 的 return 语句。

在机器代码级别,以上所有函数都有一个隐含的 return 语句。为了方便 Lua 开发人员,如果您不需要,则无需指定一个,因此

是相同的。

return 语句有两个主要目的。首先,它可以用于强制函数提前结束。让我们看一个例子

由于代码没有有效的对象来更改 x 的值,您可以退出该函数并避免潜在的错误。

return 语句的第二个用途是将信息传递回调用该函数的代码。该信息可以是简单的成功或失败指示器,或者可以传递回更有用的值。让我们看一下修改上述函数的简单成功/失败情况。

要接收数据,调用该函数的代码可以将返回值存储在变量中,或者在条件测试中对其进行测试。

有时您需要捕获这些值。让我们看一下这个简单的将两个数字相加的函数

现在你可以将数据传递给函数,也可以使用 return 语句接收返回的信息。

大多数编程语言只能返回一个值(虽然它可以是一个包含多个值的表、字典或列表)。但是,Lua 允许你返回多个值。让我们回到 moveObject 函数。

从本教程中你可以看到 return 语句在你的 Corona 冒险中是多么有用。

Rob Miracle
[email protected]

Rob 是 Corona Labs 的开发者关系经理。除了热衷于帮助其他开发者使用 Corona 制作优秀的游戏外,他还喜欢在业余时间制作游戏。Rob 从 1979 年起就开始编写游戏代码,从个人电脑到大型机。他在游戏行业拥有超过 16 年的专业经验。

没有评论

抱歉,评论表单目前已关闭。