Output contract's arguements
Peter Alexander
peter.alexander.au at gmail.com
Thu Sep 19 04:11:57 PDT 2013
On Thursday, 19 September 2013 at 11:07:07 UTC, Artur Skawina
wrote:
> On 09/19/13 12:58, Peter Alexander wrote:
>> On Thursday, 19 September 2013 at 10:44:32 UTC, monarch_dodra
>> wrote:
>>> On Thursday, 19 September 2013 at 10:38:37 UTC, Joseph
>>> Rushton Wakeling wrote:
>>>> On 18/09/13 14:11, monarch_dodra wrote:
>>>>> IMO, this is wrong. When calling a function with an out
>>>>> contract, the arguments
>>>>> should *also* be passed to the out contract directly. "out"
>>>>> should not be
>>>>> expected to run on the body's "sloppy seconds".
>>>>
>>>> I'm not sure I understand your objection here. As I
>>>> understood it the whole point of an "out" contract was to
>>>> check the state of everything _after the function has
>>>> exited_.
>>>
>>> Exactly.
>>>
>>> If the function has already exited, then why is the state of
>>> he arguments modified? I though pass by value meant that the
>>> function operated on its own copy?
>>
>> What exactly would you like this to do? v only exists inside
>> the body of the function. There is no v after the function
>> exits. If you check v in the output contract then you are
>> checking the final value of v.
>
> That "final value of v" is not part of any contract, it's just
> a private
> local.
I repeat my question then: what would you want this to do? As you
say, v is a local copy, it cannot be part of a contract -- it
cannot affect anything the client code sees.
More information about the Digitalmars-d
mailing list