Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


tcl:apply

apply

Applique une fonction anonyme. Anonyme s'entend au sens ou la fonction, qui est fondamentalement identique à une procédure, n'existe que le temps de son utilisation. La commande apply est donc particulièrement utile pour écrire des commandes à usage unique.

Syntaxe

apply func ?arg1 arg2 ...?

Description

func doit impérativement être une liste de 2 éléments {args body} (comme pour une proc) ou 3 éléments {args body namespace}.

La commande apply applique la fonction func aux arguments arg1 arg2 … et retourne le résultat.

Exemples

Exemple simple

apply [list {a b} {
   puts "$a aime $b"
}] papa maman
 
→ papa aime maman

Exemple avec un namespace

namespace eval ::testNS {}
apply [list {x} {
   variable testVar
   set testVar [expr {$x*$x}]
   return
} ::testNS] 5
set ::testNS::testVar
 
→ 25

Exemples plus complexes

Ce premier exemple montre que l'argument spécial args est valable pour apply.

apply [list {args} {
   set r {}
   foreach arg $args {
      lappend r [string length $arg]:$arg
   }
   return $r
}] a bb ccc dddd
 
→ 1:a 2:bb 3:ccc 4:dddd

Ce deuxième exemple (écrit par Andy Goth) ne pourrait pas être écrit simplement sans apply à moins d'écrire une procédure de tri qui va polluer l'espace global, peut-être pour une unique utilisation.

lsort -command {apply {{a b} {
   set result [expr {[string length $a] - [string length $b]}]
   if {$result == 0} {
      set result [string compare $a $b]
   }
   return $result
}}} {orange red yellow green blue indigo violet}
 
→ red blue green indigo orange violet yellow

Voir aussi

tcl/apply.txt · Dernière modification : 2023/10/11 09:47 de CrazyCat