Re: tcl hidden "cruelties"

Liste des GroupesRevenir à cl tcl 
Sujet : Re: tcl hidden "cruelties"
De : rich (at) *nospam* example.invalid (Rich)
Groupes : comp.lang.tcl
Date : 14. Oct 2024, 02:44:31
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <veht1v$t9io$1@dont-email.me>
References : 1
User-Agent : tin/2.6.1-20211226 ("Convalmore") (Linux/5.15.139 (x86_64))
aotto1968 <aotto1968@t-online.de> wrote:
Regardless of "broken code", TCL itself has some cruelties in its
syntax.  Here, for example, the storage of an "array" with a
namespace path, which in TCL always has !!  TWO !!  commands.  ONE
command to generate the namespace and ONE command to finally generate
the array.
 
namespace eval ::funcDEF::MkErrN {}
array set ::funcDEF::MkErrN::my {
    RETURN_MAPPING                                     {}
...
}

This is Tcl.  If something is that bothersome, just morph the language
to be the way you want it to work.  I.e.:

  proc ns-array-set {fullvarname contents} {
    namespace eval [namespace qualifiers $fullvarname] {}
    array set $fullvarname $contents
  }

Create that once, then use it, instead of plain "array set" whenever
you want to create a namespace, and then set an array within, i.e.:

  % ns-array-set abc::pdq::xyz [list a 1 b 2 c 3]

Which has now, in a single command, created the parent namespaces, and
the array variable therein:

  % info exists abc::pdq::xyz
  1
  % parray abc::pdq::xyz
  abc::pdq::xyz(a) = 1
  abc::pdq::xyz(b) = 2
  abc::pdq::xyz(c) = 3
  %

And, given that the 'array' command is itself a namespace ensemble, you
could extend the 'array' ensemble to add a "ns-set" (or whatever name
you like) to the ensemble that performs the above "create ns - and
init" of a namespace variable, then you could do
"array ns-set [list a 1 b 2]"
in your code to replace the two commands.


Date Sujet#  Auteur
10 Oct 24 * tcl hidden "cruelties"12aotto1968
11 Oct 24 +- Re: tcl hidden "cruelties"1Ralf Fassel
11 Oct 24 +- Re: tcl hidden "cruelties"1Alan Grunwald
12 Oct 24 +* Re: tcl hidden "cruelties"3aotto1968
12 Oct 24 i`* Re: tcl hidden "cruelties"2Ralf Fassel
13 Oct 24 i `- Re: tcl hidden "cruelties"1aotto1968
13 Oct 24 +* Re: tcl hidden "cruelties"2aotto1968
20 Oct 24 i`- Re: tcl hidden "cruelties"1aotto1968
14 Oct 24 `* Re: tcl hidden "cruelties"4Rich
14 Oct 24  `* Re: tcl hidden "cruelties"3aotto1968
14 Oct 24   +- Re: tcl hidden "cruelties"1et99
14 Oct 24   `- Re: tcl hidden "cruelties"1Rich

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal