| Autore: Kaesar83 | Data: 2005-11-12 |
| Modificato:
Documento non modificato
|
Letture: 2358 |
|
Uno dei più importanti aspetti del linguaggio di programmazione è rappresentato dalla condizione "if". Essa restituirà i valori TRUE o FALSE ed eseguirà i comandi associati. Mi spiego meglio, l'if usa un approccio logico come: if 1 è uguale a 1 fai questo <> altrimenti quest'altro <> La sintassi è questa: if (v1 v2) { fai questo se vero } altrimenti { fai questo se falso (l'else è opzionale non sempre serve) } Tra gli operatori che possiamo utilizzare ci sono: == (uguale) != (diverso) <= (minore o uguale) >= (maggiore o uguale) < (minore) > (maggiore) Esempio: if ($nick == $botnick) { putmsg $chan "Io sono $nick!" } else { putmsg $chan "Io non sono $nick!" } Ciò è di facile interpretazione e significa se il valore della variabile $nick è uguale a quello della variabile $botnick allora scrivi in canale "Io sono $nick!" altrimenti scrivi "Io non sono $nick!" chiaro no!?:p N.B.: E' tutto CASE SENSITIVE quindi occhio a come scrivete comandi o variabili. Adesso inizieremo a vedere le differenze che il TCL scripting ha rispetto agli altri linguaggi di programmazione. Ad esempio se io volessi scrivere qualcosa per vedere se un $nick è un op di un $chan alcuni linguaggi (vedi mirc scripting) utilizzano l'operatore isop quindi scriverei if $nick isop $chan, in TCL scripting invece, le cose cambiano, esiste una procedura chiamata isop. isop ritorna "1" se il nickname è op nel canale mentre restituirà "0" in caso contrario Ora mi chiedo...come posso utilizzare questa procedura in un if?Ecco come... Esempio: if ([isop $nick $chan] == 1) { putmsg $chan "$nick è operatore su $chan" } else { putmsg $chan "$nick non è operatore su $chan" } Lo stesso posso scriverlo in un'altra maniera cioè: if ([isop $nick $chan] == 0) { putmsg $chan "$nick non è op su $chan" } O così: if ([isop $nick $chan] != 1) blablabla o ancora: if ([isop $nick $chan] != 0) blablabla Come puoi vedere ci sono diverse possibilità. Ti suggerisco di utilizzare l'else solo in maniera opzionale, tu usi l'if dove la condizione è vera o falsa ed esegui il codice non usando l'else. Se ad esempio il bot non è op di un canale allora il msg in canale dovrà essere una domanda per avere l'op. Puoi fare ciò in due modi, il modo più difficile e meno efficiente è questo:
if ([botisop $chan] == 1) { } else { putmsg $chan "Please opme!" } Come puoi vedere se il bot è op non succede nulla, puoi quindi cambiare il tutto in maniera più valida seguendo uno di questi 2 modi: if ([botisop $chan] != 1) { putmsg $chan "Please opme!" } o if ([botisop $chan] == 0) { putmsg $chan "Please opme!" } TCL interpreterà if ([botisop $chan] == 1) {} lo stesso che if ([botisop $chan]) {} Se la condizione è vera allora esegue il codice contenuto nelle graffe. Puoi anche fare: if ([botisop $chan] == 0) {} if (![botisop $chan]) {} ! nega ciò che è presente nelle quadre L'una o l'altra condizione servono per lo stesso scopo.
# Credits #
Author: The |mmortaL [asn@cdc.net] - 'send key' in topic for PGP public key People who helped (Major Thanxs): Ec|ipse - tomas@primenet.com janni - janni@itt.org Cold Fusion - fusion@pbcs.com Ernesto Baschny baschneo@trick.informatik.uni-stuttgart.de And to the rest of the Eggdrop Doc Project team!
Tradotto e rielaborato da Kaesar83
|