From: Eric Merritt <cyberlync@yahoo.com>
To: comp.lang.ada@ada.eu.org
Subject: Re: A question and a request
Date: Wed, 7 Nov 2001 05:24:02 -0800 (PST)
Date: 2001-11-07T05:24:02-08:00 [thread overview]
Message-ID: <mailman.1005139514.30167.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: <slrn9ui901.em.randhol+abuse@kiuk0156.chembio.ntnu.no>
I knew I was missing something. That actaully make
sense, I guess I was getting this typeing behavior
mixed up with the OO inheritence model.
Thank You,
Eric Merritt
--- Preben Randhol <randhol+abuse@pvv.org> wrote:
> On Tue, 6 Nov 2001 20:44:19 -0800 (PST), Eric
> Merritt wrote:
> > As some of you may know I am fairly new to Ada and
> I
> > just found out something that surprised me. I
> declared
> > two subtypes of an integer. I was then able to add
> > these two types together and assign the result to
> an
> > instance of one of the above subtypes. or
> >
> > subtype type_1 is Integer;
> > subtype type_2 is Integer;
> >
> > type_1_instance : type_1;
> > type_2_instance : type_2;
> > type_1_instance_2 : type_1;
> >
> > type_1_instance := 1;
> > type_2_instance := 2;
> > type_1_instance_2 := type_1_instance +
> > type_2_instance;
> >
> > The addition operator is taking two disparate but
> > related types and adding them. This is fine,
> > up-casting is a normal thing. However, when the
> result
> > is returned it is not (should not be?) an instance
> of
> > the subtype. It seems that the compiler is
> > down-casting automatically. This bothers me and it
> > seams that is violates Ada's strong typing. What
> am I
> > missing here?
>
> Use type not subtype if you do not want the above
> behavior. Read
> below (taken from:
>
http://goanna.cs.rmit.edu.au/~dale/ada/aln/4_basic_types.htmli
> )
>
> Subtypes
>
> We can restrict the range of values a variable can
> take by declaring a
> subtype with a restricted range of values (this
> corresponds to Pascal's
> user defined types). Any attempt to place an
> out-of-range value into a
> variable of a subtype results in an exception
> (program error). In this
> way program errors can be discovered. The syntax for
> a subtype
> declaration is
>
> subtype Name is Base_Type;
> subtype Name is Base_Type range lowerbound . .
> upperbound;
>
> Examples of declaring subtypes are given below.
>
> type Processors is (M68000, i8086, i80386, M68030,
> Pentium, PowerPC);
> subtype Old_Processors is Processors range
> M68000..i8086;
> subtype New_Processors is Processors range
> Pentium..PowerPC;
>
> subtype Data is Integer;
> subtype Age is Data range 0 . . 140;
> subtype Temperatures is Float range -50.0 .. 200.0;
> subtype Upper_Chars is Character range 'A' .. 'Z';
>
> Subtypes are compatable with their base types . They
> can be placed in
> the same place as any variable of the base type can.
> Also variables of
> different subtypes that are derived from the same
> base type are
> compatable.
>
> My_Age : Age;
> Height : Integer;
>
> Height := My_Age; -- silly, but never causes a
> problem.
>
> My_Age := Height; -- will cause a problem if
> height's
> -- value is outside the range of
> -- my_age (0..140), but still
> -- compilable.
>
>
> Preben
> --
> Please, stop bombing civilians in Afghanistan. One
> cannot write off
> killing innocent children and other civilians as
> "collateral damage".
> A civilian is a civilian whether he or she is
> American or from another
> country in the world.
> http://web.amnesty.org/11september.htm
> _______________________________________________
> comp.lang.ada mailing list
> comp.lang.ada@ada.eu.org
> http://ada.eu.org/mailman/listinfo/comp.lang.ada
__________________________________________________
Do You Yahoo!?
Find a job, post your resume.
http://careers.yahoo.com
next prev parent reply other threads:[~2001-11-07 13:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-06 16:45 List Container Straw Man Nick Roberts
2001-11-06 17:29 ` Stephen Leake
2001-11-06 18:25 ` Marin David Condic
2001-11-06 23:02 ` Nick Roberts
2001-11-07 19:49 ` Stephen Leake
2001-11-07 20:30 ` Marin David Condic
2001-11-07 23:58 ` Nick Roberts
2001-11-08 4:34 ` Jeffrey Carter
2001-11-08 10:45 ` Ehud Lamm
2001-11-08 19:09 ` Nick Roberts
2001-11-09 16:32 ` Ted Dennison
2001-11-10 2:20 ` Nick Roberts
2001-11-10 19:50 ` Ehud Lamm
2001-11-11 3:48 ` Nick Roberts
2001-11-08 10:41 ` Ehud Lamm
2001-11-08 19:20 ` Marin David Condic
2001-11-08 20:35 ` Ehud Lamm
2001-11-09 16:39 ` Ted Dennison
2001-11-08 0:06 ` Nick Roberts
2001-11-09 16:16 ` Stephen Leake
2001-11-09 16:24 ` Ehud Lamm
2001-11-09 16:52 ` Brian Rogoff
2001-11-09 18:04 ` Darren New
2001-11-09 20:05 ` Stephen Leake
2001-11-10 3:24 ` Nick Roberts
2001-11-06 23:52 ` Nick Roberts
2001-11-07 4:44 ` A question and a request Eric Merritt
2001-11-07 11:00 ` Preben Randhol
2001-11-07 12:54 ` David C. Hoos, Sr.
2001-11-08 2:35 ` dale
2001-11-07 13:24 ` Eric Merritt [this message]
2001-11-07 13:58 ` James Rogers
2001-11-07 16:32 ` Jeffrey Carter
2001-11-09 23:32 ` Matthew Heaney
[not found] <3BE93E12.7BB33908@worldnet.att.net>
2001-11-07 17:38 ` Eric Merritt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox