有人能解释一下Ada语言中的“procedure”和“function”之间的区别吗?
相比其他命令式的C语言,Ada语言并没有太大的区别。不过,由于其非常丰富的静态类型系统和语言直接提供的功能(例如任务),语法看起来可能会很奇怪,并且包含许多不同的语句。
与大多数C-like语言不同,Ada区分了过程性和函数式例程。在这个意义上,函数非常类似于数学函数,它需要参数(或没有参数),然后返回一个值,因此用于表达式中。过程不返回任何值,不能在表达式中使用。Pascal语言保持了函数和过程之间的区别。而C-like语言选择只有函数可以在表达式之外使用(在这种情况下会忽略返回的值)或返回void值来像过程一样执行。
in out
参数改变状态。 - remcycles