comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Apostrophe question
Date: Wed, 2 May 2007 12:24:47 +0200
Date: 2007-05-02T12:24:47+02:00	[thread overview]
Message-ID: <bufx53qr9bj0$.1ih73s81zqj56$.dlg@40tude.net> (raw)
In-Reply-To: 1178051815.717834.317520@n76g2000hsh.googlegroups.com

On 1 May 2007 13:36:55 -0700, David Smith wrote:

> I've read a number of Ada tutorials now, and I'm unclear on when the
> apostrophe is required in certain spots.  For example, why is it used
> here:
> 
> Father : Person_Access := new Person'(Father_First_Name,
> Father_Last_Name);
> 
> but not here:
> 
> type Float_Array is array(Integer range <>) of Float;
> type Float_Array_Access is access Float_Array;
> V : Float_Array_Access := new Float_Array(1 .. 3);
> 
> I'm sure there is a page about this somewhere, but I can't find it.
> If someone could point me in the right direction, I'd appreciate it.

You mean T(...) vs T'(...), where T is the name of a [sub]type?

The former is either

1.a. Explicit type conversion

   Float (1 + 2)

1.b. [Sub]type specification

   Float_Array (1..3)

here Float_Array (1..3) specifies a subtype of Float_Array constrained to
the range 1..3. In the brackets you specify the constraint[s].

The latter is

2. Qualified expression. T specifies the expected [sub]type of what is in
the brackets:

   Float'(1.0 + 2.0)

You need it only if the compiler could not come out without your help. Or
else when the language explicitly requires qualified expressions.

In your case, the allocator new when allocates an initialized object
requires the expression of be qualified (RM 4.8). I.e.

   new 1.0  -- illegal
   new Float'(1.0)  -- That's OK

This is why you have to say Person' before the aggregate of Person:

   (Father_First_Name, Father_Last_Name);

[ Don't ask me why new does not eat plain expressions... (:-)) ]

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



      parent reply	other threads:[~2007-05-02 10:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-01 20:36 Apostrophe question David Smith
2007-05-02  2:48 ` Matthew Heaney
2007-05-02 10:24 ` Dmitry A. Kazakov [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox