Article View: pl.comp.lang.tcl
Article #380Re: unknown dla zmiennych
From: Artur
Date: Mon, 15 May 2006 11:44
Date: Mon, 15 May 2006 11:44
57 lines
2740 bytes
2740 bytes
Witam!
No rzeczywiście Tcl nie ma zbyt zaawansowanego Error handling.
To znaczy; nie można wskoczyć spowrotem do mniejsca gdzie wystąpił
błąd.
SmallTalk na takie stuczki pozwala.
Można ale zostosować wrapper dla dostępu do danej i upvar dla
definicji
proc lasyInitVar {varref init} {
upvar $varref var
if {[info exists var]} {
set var
} else {
set var $init
}
}
set b [lasyInitVar c 10]
set c
# albo z scriptem który jest evaluowany tylko jeśli trzeba
proc lasyInitVarHandle {varref script} {
upvar $varref var
if {[info exists var]} {
set var
} else {
set var [uplevel $script]
}
}
proc expensiveProc {} {
return "expensiveReturn"
}
set b [lasyInitVarHandle wh {expensiveProc}]
set wh
Można by także przedefiniować set ale zamiany $ bez przeróbki
interpretera się nie da.
Artur
> Polecenie unknown pozwala podłączyć się z własnym handlerem na okazję
> wywołania procedury, która jeszcze nie jest zdefiniowana.
>
> Chciałbym mieć coś takiego dla zmiennych, czyli jeśli ktoś zawoła
> $blabla w sytuacji, gdy blabla nie istnieje, to chciałbym, żeby wywołana
> została moja procedura, która być może tą zmienną zdefiniuje "w locie".
>
> Wyląda na to, że standardowo czegoś takiego nie ma, a szkoda.
> Ktoś ma może jakiś pomysł?
>
>
> --
> Maciej Sobczak : http://www.msobczak.com/
> Programming : http://www.msobczak.com/prog/
Technical Details
Message-ID:
<1147693474.334767.63870@j73g2000cwa.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!j73g2000cwa.googlegroups.com!not-for-mailReferences:
<e49cbn$qhb$1@sunnews.cern.ch>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!j73g2000cwa.googlegroups.com!not-for-mail From: "Artur" <mail@xdobry.de> Newsgroups: pl.comp.lang.tcl Subject: Re: unknown dla zmiennych Date: 15 May 2006 04:44:34 -0700 Organization: http://groups.google.com Lines: 62 Message-ID: <1147693474.334767.63870@j73g2000cwa.googlegroups.com> References: <e49cbn$qhb$1@sunnews.cern.ch> NNTP-Posting-Host: 62.225.37.69 Mime-Version: 1.0 X-Trace: posting.google.com 1147693479 22894 127.0.0.1 (15 May 2006 11:44:39 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 15 May 2006 11:44:39 +0000 (UTC) In-Reply-To: <e49cbn$qhb$1@sunnews.cern.ch> User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1,gzip(gfe),gzip(gfe) X-HTTP-Via: 1.1 G8SLV (NetCache NetApp/5.6.2R1D19), 1.1 G8SLV (NetCache NetApp/5.6.2R1D19) Complaints-To: groups-abuse@google.com Injection-Info: j73g2000cwa.googlegroups.com; posting-host=62.225.37.69; posting-account=LCgZWAwAAABJR_8tjAef_hUAajXeKdEF Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit