From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,9fb64e4c58f1fe X-Google-Attributes: gid103376,public From: jsa@alexandria (Jon S Anthony) Subject: Re: overload ":=" ??? Date: 1996/07/18 Message-ID: #1/1 X-Deja-AN: 168649024 sender: news@organon.com (news) references: <31ED3F5F.1135B4EA@jinx.sckans.edu> organization: Organon Motives, Inc. newsgroups: comp.lang.ada Date: 1996-07-18T00:00:00+00:00 List-Id: In article <31ED3F5F.1135B4EA@jinx.sckans.edu> David Morton writes: > Is there a way to overload the assignment operator ":=" ? Not exactly, but you can typically get close to equivalent functionality with controlled types (RM 7.6 "User-Defined Assignment and Finalization") However, your example is something where a "converter" would be the more natural approach in Ada. > with Text_IO; use Text_IO; > procedure Test is > type Text; > type Text_Ptr is access Text; > > type Text is record > Buf : String(1..50); > Length : Natural; > end record; > > function ":="(Right : String) is function to_text ( right : string ) return text is res : text; begin if right'length > text.buf'length then raise ... else res.buf(right'range) := right; res.length := right'length; end if; return res; end to_text; ... t : text := to_text("hi there!"); A variation that some use is to name the "to_text" function as a unary operator like "+" or something. Then you get: t : text := +"hi there!"; /Jon -- Jon Anthony Organon Motives, Inc. 1 Williston Road, Suite 4 Belmont, MA 02178 617.484.3383 jsa@organon.com