🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Optymalizacja

#17
From: Googie
Date: Tue, 31 May 2005 09:44
42 lines
2171 bytes
Użytkownik "Derek Kuliński / takeda" <d.kulinski@gmail.com> napisał:

> Ma ktoś pomysł jak poniższą procedurę zoptymalizować? Działać działa, ale
> nie jest to ładne rozwiązanie. Bardzo nie podoba mi się powtarzający się
> kod.

Mnie się udało sprowadzić to do takiej postaci: (nie testowałem czy działa -
nie mam na stanie żadnych botów).
Generalnie "optymalizacja" sprowadza się do krótszego zapisu powtarzającego
się kodu (a więc to co Ci się nie podobało :) ). Oprócz tego wyrzuciłem z
pętli sprawdzanie 'if {$modes == ""} {.......}', bo i tak można ustawiać "+"
lub "-" na wstępie oraz przy "resetowaniu" wartości modes.

proc combine_modes {dchan add_r rm_r} {
 set maxlen ${::modes-per-line}
 set chan [chandname2name $dchan]

 set output [list]
 set masks [list]

 #removing invalid +R

 foreach {varName sig} {
  rm_r "-"
  add_r "+"
 } {
  set modes $sig
  foreach mask [set $varName] {
   append modes "R"; lappend masks $mask
   if {[llength $masks] >= $maxlen} {
    lappend output "MODE $chan $modes [join $masks]"
    set modes $sig; set masks [list]
   }
  }
 }

 if {[llength $masks] > 0} {
  lappend output "MODE $chan $modes [join $masks]"
 }

 return $output
}
Technical Details
Message-ID: <d7hb73$koa$1@srv.cyf-kr.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail
References: <6cfos1e7qd1w$.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!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail
From: "Googie" <googie@no.spam.org>
Newsgroups: pl.comp.lang.tcl
Subject: Re: Optymalizacja
Date: Tue, 31 May 2005 11:44:21 +0200
Organization: Academic Computer Center CYFRONET AGH
Lines: 45
Message-ID: <d7hb73$koa$1@srv.cyf-kr.edu.pl>
References: <6cfos1e7qd1w$.dlg@takeda.tk.stupid.worms.and.spammers.sending.mails.to.msgid>
NNTP-Posting-Host: tatanka.veranet.pl
X-Trace: srv.cyf-kr.edu.pl 1117532195 21258 195.214.216.6 (31 May 2005 09:36:35 GMT)
X-Complaints-To: news@cyf-kr.edu.pl
NNTP-Posting-Date: Tue, 31 May 2005 09:36:35 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit