comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Newbie question # 2
Date: Thu, 6 Aug 2020 22:20:11 +0300	[thread overview]
Message-ID: <hp33fdFlbr2U1@mid.individual.net> (raw)
In-Reply-To: <8b2858e0-e69c-4a22-ad51-a6a7c51e7a7do@googlegroups.com>

On 2020-08-06 21:40, Ian Douglas wrote:
> Hi all
> 
> I did try Google search and assorted books but could not find
> answer.
> 
> In PHP, let's say we have a variable $fruit which contains the string
> "banana".
> 
> In PHP, if I do $$fruit, then it creates a variable $banana, which I
> can then do things with.


Fortran has a similar feature, NAMELIST, for reading values into 
variables also named in the input. It can also be used for output.

Ada does not have such a feature.


> Does Ada support any such concept of taking the contents of one
> variable and using THAT as a variable?


The closest thing in Ada is a variable of an access type, which can be 
set to refer to some other variable. However, access types do not work 
with the variable's (string) identifier, but use its run-time memory 
address (the 'Access attribute).


> I'm reading in a file which has a name of an object followed by some
> properties so I want to use the name as a variable ... File is
> something I created, so it's not some random stuff, and the variables
> will be existing already.


In Ada, you, yourself, have to program the mapping from the name 
(string) to the variable. This can be as simple as an if-then-else cascade:

    if Name = "foo" then
        Set_Properties (foo);
        -- Where "foo" is the identifier of a variable.
    elsif Name = "bar" then
       Set_Properties (bar);
    ...
    end if;


Alternatively, you can implement the mapping with a map container from 
the Ada container library, as Simon Wright suggested. However, if the 
variables already exist and are used directly in various parts of your 
program, you may want to store, in the map, /accesses/ to the existing 
variables, instead of using the map's elements themselves as these 
variables.

-- 
Niklas Holsti
niklas holsti tidorum fi
       .      @       .

  parent reply	other threads:[~2020-08-06 19:20 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06 18:40 Newbie question # 2 Ian Douglas
2020-08-06 18:56 ` Simon Wright
2020-08-06 19:41   ` Ian Douglas
2020-08-06 21:10     ` Simon Wright
2020-08-07 11:28       ` Ian Douglas
2020-08-06 19:20 ` Niklas Holsti [this message]
2020-08-06 19:45   ` Ian Douglas
2020-08-06 20:08     ` Niklas Holsti
2020-08-06 19:41 ` Dmitry A. Kazakov
replies disabled

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