🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.tcl
Article #380

Re: unknown dla zmiennych

#380
From: Artur
Date: Mon, 15 May 2006 11:44
57 lines
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-mail
References: <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