Prev: Improving the first contact with Ada (was: GCC conflict on Ubuntu for mixed Ada/C++ project)
Next: $50,000 for KILLING FBI, CIA, NSA and NIS DIRECTORS
From: KK6GM on 25 May 2010 18:27 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 25 May 2010 18:38 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 25 May 2010 18:39 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 25 May 2010 18:47 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 25 May 2010 19:33
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. |