赋值语句中的求值顺序

问题描述 投票:0回答:1

Ada 2012 标准 说:

对于赋值语句的执行,首先以任意顺序计算变量名和表达式。

我想知道这个声明的影响力有多大。如果赋值的右侧和左侧都包含子程序调用,这些调用是否可以按任意顺序进行,或者所有左侧将在右侧的所有调用之前/之后进行评估?

例如如果我有

Arr(L1(X), L2(X)) := Arr(R1(Y), R2(Y))
,我可以确定呼叫顺序将是以下之一:

  1. L1、L2、R1、R2
  2. L1、L2、R2、R1
  3. L2、L1、R1、R2
  4. L2、L1、R2、R1
  5. R1、R2、L1、L2
  6. R1、R2、L2、L1
  7. R2、R1、L1、L2
  8. R2、R1、L2、L1

或者左右两边的调用可以混合使用吗,比如:L1,R2,L2,R2?

ada
1个回答
0
投票

我对阅读的解释是,它不会混合它们,而是使用上面的 8 个选项之一。但我找不到任何具体的措辞来证实或否认这一点。如果没有其他人能够明确回答,我建议在 Ada Rapporteur Group github 上创建一个问题,并寻求对 ARM 措辞的澄清。您也许可以在那里得到更明确的答案

https://github.com/Ada-Rapporteur-Group/User-Community-Input/issues

© www.soinside.com 2019 - 2024. All rights reserved.