Ada函数与过程的区别

16
有人能解释一下Ada语言中的“procedure”和“function”之间的区别吗?

1
过程是语句的抽象,而函数是表达式的抽象。 - user1818839
7
对于关闭了这个问题的人:那其实是一个有意义的问题。由于回答已经关闭,我将在评论中回复。在Ada 2012之前,函数只能具有in-mode参数,而过程可以具有所有的in、out和in-out参数。自从Ada 2012以来,函数现在允许具有out和in-out参数。同样适用于Ada 2012的规定,函数可以应用"pragma Pure",而过程则不能。如果只有投票关闭问题的人了解一点Ada就好了... - Hibou57
1
这个问题实际上是一个重复 - Simon Wright
2
如果这是一个重复问题,请包含原问题的链接。这个答案对我非常有帮助,因为美国军事应用程序经常使用Ada语言。此外,任何学习Ada语言的人都能立即理解这个问题,因此这个问题在教育成员方面发挥了作用。 - MNRC
8
当关闭这个问题时,原因应该被标注为“重复”,而不是“关闭,因为这个问题不是一个真正的问题”,因为对于任何探索非主流编程语言世界的人来说,这个问题都是非常真实的。 - MNRC
显示剩余4条评论
1个回答

16

相比其他命令式的C语言,Ada语言并没有太大的区别。不过,由于其非常丰富的静态类型系统和语言直接提供的功能(例如任务),语法看起来可能会很奇怪,并且包含许多不同的语句。

与大多数C-like语言不同,Ada区分了过程性和函数式例程。在这个意义上,函数非常类似于数学函数,它需要参数(或没有参数),然后返回一个值,因此用于表达式中。过程不返回任何值,不能在表达式中使用。Pascal语言保持了函数和过程之间的区别。而C-like语言选择只有函数可以在表达式之外使用(在这种情况下会忽略返回的值)或返回void值来像过程一样执行。


Ada过程能修改变量(改变状态)吗? - MNRC
是的,过程可以通过in out参数改变状态。 - remcycles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接