2013-02-20 57 views
3

我可能简单地误解了两者之间的区别:如果子程序和函数之间唯一的区别是函数可以选择返回一个值而子程序没有,那么在什么情况下你会使用子程序?你为什么不总是使用函数?对于VBScript,子程序的优点是什么?

回答

3

当我需要一个'指定的代码片段'时,我使用了Subs,它不返回任何信息,但仅为其副作用而被调用。当我需要一个'指定的代码片段'来返回一些信息(和(通常)没有副作用)时,我使用函数。我很高兴能够明确地在VBScript中陈述我的意图。

补充:为什么@AutomatedChaos'建议(意见)是错误的:

  1. 你的设计得到解决之前,您应该不写代码。要么你不需要检查文件删除操作的结果(然后写一个Sub),或者你必须(然后写一个Function)。你后来可能会意识到你犯了一个错误,但是你不得不改变npc的类型。
  2. 在函数中检查动作的结果是承诺您的脚本将始终合理地处理动作失败(因为函数的每次调用都必须检查返回值)。为了自由地授予许可证,将这样的功能称为子功能使这个承诺无效。
+0

谢谢。所以通常情况下,你不写有副作用的函数? ...忍者编辑: 难以接受或总是希望那段指定的代码返回一些不好的策略?例如,如果一个删除一个文件的子文件可以返回一个bool确认成功与否,那将是很好的...因为一个子文件没有这样做,所以我会使用一个函数。使用这种推理方式,我会使用几乎所有的功能。 – user974552 2013-02-20 20:25:18

+0

@ user974552 - 让我们说:如果我写了一个副作用函数,我知道我不应该这样做。 – 2013-02-20 20:28:53

+2

@ user974552 - Wrt your addition:我不检查副作用(这是脚本,不是月球着陆)的结果,但如果你想要,那么你有第三性别的npcs:做*和*返回结果。 – 2013-02-20 20:38:57

相关问题