gpt4 book ai didi

declaration - Ada 中的常量声明

转载 作者:行者123 更新时间:2023-12-03 14:31:09 26 4
gpt4 key购买 nike

作为 Ada 的新手,我正在探索它的语法和规则,我想提请注意接下来给出的代码。在这里,我试图设置一个变量 Actual_Stiffness 来保持一个常量值。它的值(value)由产品给出:

Actual_Stiffness := Stiffness_Ratio * Stiffness_Total

其中 Stiffness_Total 已在规范文件 Material_Data.ads 中定义为常量 Long_Float,而 Stiffness_Total 的值已在广告文件中设置。
WITH Ada.Text_IO;
WITH Ada.Long_Float_Text_IO;
WITH Material_Data;
USE Material_Data;

PROCEDURE sample IS

Stiffness_Ratio : Long_Float;
Actual_Stiffness : CONSTANT Long_Float := Stiffness_Ratio * Stiffness_Total;

BEGIN -- main program
Ada.Text_IO.Put("Enter stiffness ratio: ");
Ada.Long_Float_Text_IO.Get(Item => Stiffness_Ratio);
Ada.Long_Float_Text_IO.Put(Item => Stiffness_Ratio);

--Ada.Text_IO.New_Line;
--Ada.Long_Float_Text_IO.Put(Item => Actual_Stiffness);
--Ada.Text_IO.New_Line;
--Ada.Long_Float_Text_IO.Put(Item => Stiffness_Total);
END sample;

在编译时,我收到警告消息

warning: "Stiffness_Ratio" may be referenced before it has a value




在运行程序时,Actual_Stiffness 没有得到正确的值。我可以将 Actual_Stiffness 定义为一个 Long_Float(不添加 CONSTANT),然后在程序中的 BEGIN 之后从产品 Actual_Stiffness := Stiffness_Ratio * Stiffness_Total 中获取它的值,此时 Stiffness_Ratio 已经获得了一个值。这将是正确的做法。

我的问题是:

我已将 Stiffness_Total 定义为具有规定值的常量 Long_Float。如何将 Actual_Stiffness 定义为常量(因为它不会在程序中改变),同时保持用户能够在终端交互输入 Stiffness_Ratio 的能力?这甚至可能做到吗?

非常感谢..

最佳答案

由于 'Stiffness_Ratio' 直到运行时才确定,编译器无法按照您的要求在编译时计算 'Actual_Stiffness' 的值。您必须将 'Actual_Stiffness' 设为非常量变量,并在 'Stiffness_Ratio' 具有值后使用计算对其进行初始化。 (您甚至可以将其作为函数内的 CONSTANT 保留,只要刚度比在计算实际刚度时具有值。)

这是大多数编程语言的标准。

所以,回答你的问题:

  • 不,您不能根据需要将 Actual_Stiffness 定义为常量。
  • 一个适度接近的近似值是在此过程之外确定 Stiffness_Ratio 值,并将该值作为参数传递到过程中。但是 Actual_Stiffness 仅在程序持续时间内保持不变,而不是所有时间。

  • 另一方面,这可能更有用;有人可以在不同时间运行具有多个刚度比值的程序,从而在一次运行中进行多次模拟。

    关于declaration - Ada 中的常量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3174524/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com