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
. @ .
next prev 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