From: KK6GM on
Looking at Cohen's "Ada as a 2nd Language" I see in chapter 8 (Access
Types), p.319, this construct which I do not understand. But first,
the construct I do understand:

Old_Serial_Number := Serial_Number("Lovelace, Ada").all;

No confusion about that whatsoever. However, that is followed by
this:

"More interestingly, the assignment
Serial_Number( "Lovelace, Ada").all := New_Serial_Number;
copies the contenst of the integer variable into the variable
pointed to by the result of the function call."

Huh? Where does the New_Serial_Number value end up here?



From: Yannick Duchêne (Hibou57) on
Le Wed, 26 May 2010 00:27:39 +0200, KK6GM <kk6gm(a)att.net> a écrit:

> Looking at Cohen's "Ada as a 2nd Language" I see in chapter 8 (Access
> Types), p.319, this construct which I do not understand. But first,
> the construct I do understand:
>
> Old_Serial_Number := Serial_Number("Lovelace, Ada").all;
>
> No confusion about that whatsoever. However, that is followed by
> this:
>
> "More interestingly, the assignment
> Serial_Number( "Lovelace, Ada").all := New_Serial_Number;
> copies the contenst of the integer variable into the variable
> pointed to by the result of the function call."
>
> Huh? Where does the New_Serial_Number value end up here?

As I don't see any trouble here, I'm not sure I've understood the
question. However, here is the answer I give to it as I can understand it :

If you do

Serial_Number( "Lovelace, Ada").all := New_Serial_Number;

You get the same thing as if you do

Old_Serial_Number := Serial_Number("Lovelace, Ada").all;
Old_Serial_Number.all := New_Serial_Number;

Can you give a link to the page you are reading ?

--
There is even better than a pragma Assert: a SPARK --# check.
From: Yannick Duchêne (Hibou57) on
Le Wed, 26 May 2010 00:38:03 +0200, Yannick Duchêne (Hibou57)
<yannick_duchene(a)yahoo.fr> a écrit:
> You get the same thing as if you do
>
> Old_Serial_Number := Serial_Number("Lovelace, Ada").all;
> Old_Serial_Number.all := New_Serial_Number;
Typo error, sorry. You should read:

Old_Serial_Number := Serial_Number("Lovelace, Ada");
Old_Serial_Number.all := New_Serial_Number;

instead.

--
There is even better than a pragma Assert: a SPARK --# check.
From: KK6GM on
On May 25, 3:39 pm, Yannick Duchêne (Hibou57)
<yannick_duch...(a)yahoo.fr> wrote:
> Le Wed, 26 May 2010 00:38:03 +0200, Yannick Duchêne (Hibou57)  

>       Old_Serial_Number := Serial_Number("Lovelace, Ada");
>       Old_Serial_Number.all := New_Serial_Number;

Yes, after a few more minutes thinking about it I see what's
happening. The value of New_Serial_Number is being stored via the
unnamed access value returned by Serial_Number().
From: Yannick Duchêne (Hibou57) on
Le Wed, 26 May 2010 00:47:24 +0200, KK6GM <mjsilva(a)scriptoriumdesigns.com>
a écrit:

> On May 25, 3:39 pm, Yannick Duchêne (Hibou57)
> <yannick_duch...(a)yahoo.fr> wrote:
>> Le Wed, 26 May 2010 00:38:03 +0200, Yannick Duchêne (Hibou57)
>
>> Old_Serial_Number := Serial_Number("Lovelace, Ada");
>> Old_Serial_Number.all := New_Serial_Number;
>
> Yes, after a few more minutes thinking about it I see what's
> happening. The value of New_Serial_Number is being stored via the
> unnamed access value returned by Serial_Number().
You got it!

And welcome to/aboard Ada

--
There is even better than a pragma Assert: a SPARK --# check.