【问题标题】:What's the difference between := and => in Ada?Ada 中的 := 和 => 有什么区别?
【发布时间】:2023-04-06 20:44:01
【问题描述】:

据我所知,:= 似乎是通过复制进行分配。运算符=> 似乎做了类似的赋值,但在将参数赋值给对象的成员变量时使用。

所以...

receivesTheCopy := isBeingCopied

memberVariable => passedParameter

我正在处理别人的旧代码,我有一个变量达到了一个我从未见过用:= 明确分配给它的值。我在想也许当它被分配给带有=>memberVariable 时,它是通过引用传递的,因此passedParameter 变量保持与memberVariable 状态相关联。

【问题讨论】:

    标签: pass-by-reference ada colon-equals


    【解决方案1】:

    := 是一个作业。

    => 有多种用途:

    1. 参数传递:哪个形参传递哪个参数(如果不是按顺序完成的)。
    2. 记录和数组聚合:哪个字段获取哪个值。
    3. 方面:将方面名称与分配给它们的表达式分开。

    在这两种情况下,它都与传递引用或传递值无关。

    【讨论】:

    • 嗨@JacobSparreAndersen,当您提到:“参数传递:哪个形式参数传递哪个参数”时,这不是按引用传递还是按值传递?
    • 传递参数时,=> 只是将形式参数名称与参数关联。 “pass by”语义由参数模式和参数类型决定。
    • Ada参数传递方式有IN、OUT、IN OUT。这些模式都没有指定按引用传递或按值传递。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    相关资源
    最近更新 更多