如何在ada后置条件中为函数参数指定新值

如何在ada后置条件中为函数参数指定新值,ada,contract,post-conditions,Ada,Contract,Post Conditions,我一直在尝试很多事情,寻找解决方案,但我找不到 我被卡住了,因为我需要给ada函数中的post条件分配一个新值 例如,使用以下功能: function Square(A: in out INTEGER) return INTEGER with Pre => A > 0, Post => Square'Result = A * A .... 我想知道如何在post条件中增加参数A或将其设置为随机值,如42 多谢各位 可以使用“Pre”和“Pos

我一直在尝试很多事情,寻找解决方案,但我找不到

我被卡住了,因为我需要给ada函数中的post条件分配一个新值

例如,使用以下功能:

function Square(A: in out INTEGER) return INTEGER
   with 
      Pre => A > 0,
      Post => Square'Result = A * A
....
我想知道如何在post条件中增加参数A或将其设置为随机值,如42

多谢各位


可以使用“Pre”和“Post”在函数执行之前或之后使用值。我认为不可能在合同中真正改变A的价值……谢谢你的回答,我刚刚通过测试找到了答案请解释一下你通过“测试东西”发现了什么。也许你也可以澄清你原来的问题是什么,因为我当然不明白你想做什么;前置和后置条件都是条件,它们不会改变任何变量的值。在一个前提条件中,名称a指的是子程序执行前a的值;在后置条件中,名称a指的是执行后a的值。在后置条件中,并且只有在后置条件中,才能使用“Old”来引用子程序执行之前的值。@NiklasHolsti确实如此。它是X,X’Old和F’Result。