Article View: pl.comp.lang.tcl
Article #19Re: Optymalizacja
From: Googie
Date: Tue, 31 May 2005 20:31
Date: Tue, 31 May 2005 20:31
54 lines
2678 bytes
2678 bytes
Derek Kuliński / takeda wrote:
> Jesteś
> pewien, że na czystym Tcl będzie to działać?
Tak. Zgodność z Tcl została zachowana. Jedyne co może niedziałać to
jakiś błąd merytoryczny - tak jak wspomniałem - nie miałem gdzie tego
przetestować, więc może być jakiś błąd, ale myślę że sobie poradzisz.
> nie przypuszczałem, że da się aż tak uprościć,
> widać pozostaje mi jeszcze sporo do nauczenia się =)
To taki (dość znany już na clt) trick :)
Komendy [foreach] tutaj odegrała kluczową rolę.
Oto prostszy przykład obrazujący zastosowane rozwiązanie:
#-----------
set tablica(a) 0
set tablice(b) 1
set tablica(c) 3
set zmienna_1 10
set zmienna_2 11
set zmienna_3 12
set lista [list to jest lista]
foreach {idx nazwa_zmiennej poz} {
a zmienna_1 1
b zmienna_2 0
c zmienna_3 2
} {
puts "-> $tablica($idx), [set $nazwa_zmiennej], [lindex $lista $poz]"
}
#-----------
Przy czym samo [foreach] można za zapisać tak na prawdę tak jak poniżej
i będzie to zapis równoznaczny, ale mniej czytelny, choć może będzie
dla Ciebie bardziej znajomy:
#-----------
foreach {idx nazwa_zmiennej poz} {a zmienna_1 1 b zmienna_2 0 c
zmienna_3 2} {
puts "-> $tablica($idx), [set $nazwa_zmiennej], [lindex $lista $poz]"
}
#-----------
W ten sposób można skracać powtarzający się kod w wielu przypadkach (aż
sam się dziwię, w jak wielu... :) ), bo definiujesz sobie tylko dla
[foreach] listę zmieniających się "łańcuchów/słów" w kodzie, a sam kod
piszesz w ciele [foreach], wstawiając zmienne z [foreach] zamiast tych
słów. Mam nadzieję że nie zamotałem za bardzo.
--
Pozdrawiam (Greetings)!
Googie
Technical Details
Message-ID:
<d7iam3$4us$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<6cfos1e7qd1w$.dlg@takeda.tk.stupid.worms.and.spammers.sending.mails.to.msgid> <d7hb73$koa$1@srv.cyf-kr.edu.pl> <ku8uj48navzk.dlg@takeda.tk.stupid.worms.and.spammers.sending.mails.to.msgid>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!news.tpi.pl!not-for-mail From: Googie <pawel@veranet.pl> Newsgroups: pl.comp.lang.tcl Subject: Re: Optymalizacja Date: Tue, 31 May 2005 20:31:09 +0000 Organization: tp.internet - http://www.tpi.pl/ Lines: 54 Message-ID: <d7iam3$4us$1@nemesis.news.tpi.pl> References: <6cfos1e7qd1w$.dlg@takeda.tk.stupid.worms.and.spammers.sending.mails.to.msgid> <d7hb73$koa$1@srv.cyf-kr.edu.pl> <ku8uj48navzk.dlg@takeda.tk.stupid.worms.and.spammers.sending.mails.to.msgid> NNTP-Posting-Host: tf18.internetdsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1117564419 5084 80.55.109.18 (31 May 2005 18:33:39 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Tue, 31 May 2005 18:33:39 +0000 (UTC) User-Agent: KNode/0.9.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit