程序员们…
我只是一个新的学习者,并试图在特定的设计环境中实践一些编程范式。最近我在Ada语言的过程编程中学到了很多新的小东西,并且有了很好的学习经验。但是,我自己找不到答案,为什么Ada在子程序声明中使用分号;
来分隔参数。
-- subprogram declaration - - - - - - - - -
procedure Initialize_Some_Things
( Result : out Integer
; Asset : in Integer
; Option: in Integer ) is
begin
null;
end Initialize_Some_Things;
-- invoking subprogram - - - - - - - - -
Instance : Integer := 0;
Initialize_Some_Things (Instance, 9, 5);
对于任何来自其他编程语言的人来说,在子程序声明中使用分号来分隔参数显然是很奇怪的。更奇怪的是,子程序的调用要求使用逗号,
而不是声明中的分号;
。我搜索了一段时间的相关问题,但在谷歌上一无所获。是否可以提交请求对语言的标准规范进行这种细微的更改?我在Google上没有找到相关问题。我希望我能在这里找到。
可以用逗号分隔列表中的参数,但可以用分号分隔列表;不同的符号有助于捕获错误。
在您的测试用例中,每个条目都是参数列表,而不是参数。您选择制作三个列表,每个列表都很长,但您可以将其中两个列表合并为一个列表,并使用逗号。
Asset, Option : In Integer
这主要是一个风格问题,以帮助清晰。
如果资产和选项是非常不同的东西,不同的列表有助于澄清区别。如果它们在笛卡尔坐标中与X,Y,Z
相似,我会将它们组合成一个列表。
是的,对于一门编程语言来说,如此强调编写清晰的代码可能有点奇怪。
另一个例子:使用命名关联
调用子程序通常被认为是更好的做法Initialize_Some_Things (Result => Instance,
Asset => 9,
Option => 5);
如果你曾经花了一个愉快的下午去追踪一个错误,结果发现是几个参数顺序错误,你可能会发现这种风格的Ada是令人失望的可预测的。