| Deutsch English Français Italiano |
|
<v5llnh$37llc$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: aotto1968 <aotto1968@t-online.de>
Newsgroups: comp.lang.tcl
Subject: where is the TCL "macro" command ?
Date: Fri, 28 Jun 2024 08:37:37 +0200
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <v5llnh$37llc$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 28 Jun 2024 08:37:38 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c76961bfecfe5181df2c9568727b09d5";
logging-data="3397292"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19i1+B+BTSOmKG5+ojly58fOLEEnfvqi4M="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:tsUvt2TC50h0MZtBJ0rbf9ryWrY=
Content-Language: en-US
Bytes: 1692
Hi, the following code is ugly:
proc block {args} {
set code [lindex $args end]
set args [lrange $args 0 end-1]
foreach {var val} $args {
uplevel [list push $var $val]
}
uplevel $code
foreach {var val} $args {
uplevel [list pop $var]
}
}
I want to have
macro block {args} {
local code var val
set code [lindex $args end]
set args [lrange $args 0 end-1]
foreach {var val} $args {
push $var $val
}
eval $code
foreach {var val} $args {
pop $var
}
}
the "macro" command evaluate the code IN the Frame of the calling "proc"
arguments and "local" declared variables are local, all other variables
are always in the frame of the calling "proc"
mfg