UDF strutturaColdFusion ha più di 250 funzioni nella sua lingua. Ha funzioni di manipolazione di stringhe, funzioni array, funzioni di struttura, e molti altri tipi di funzioni. Anche con questa vasta gamma di funzioni, tuttavia a volte può essere utile per definire la propria funzione che fa le cose che le funzioni built-in ColdFusion non si può. Questo articolo non descrive come utilizzare cfscript solo come usare cfscript in combinato disposto con le funzioni definite dall'utente. Una funzione definita dall'utente, o UDF, può essere costruito in cfscript, CFML, o una combinazione dei due. Le parti che seguono descrivono come costruire UDF utilizzando cfscript. UDF cfscript sono molto naturale perché imitano la creazione di funzione in JavaScript, Java, e molti altri linguaggi di programmazione che si possono già essere a conoscenza. In generale, le funzioni ricevere uno o più argomenti e restituiscono un unico risultato. Alcune funzioni (come ad esempio ColdFusion della funzione Now ()) non prendono argomenti, ma quasi tutte le funzioni non restituiscono un risultato. A UDF di base costruita utilizzando cfscript appare come segue:
Il solo quattro cose necessarie per ogni funzione è la parola chiave function, il nome della funzione, le parentesi dopo il nome, e le parentesi graffe intorno al corpo della funzione. Anche se l'istruzione return è tecnicamente opzionale, il ritorno è ciò che rende una funzione veramente utile, come questa dichiarazione rappresenta il risultato restituito al codice che chiama la funzione. Chiamiamo la funzione che abbiamo appena creato come si farebbe con qualsiasi funzione built-in ColdFusion, come segue:
Siamo in grado di espandere la mia funzione di definire una variabile locale, come segue: GetCurrentTime function () (var = szTime TimeFormat (Now (), "h: mm: ss tt"); szTime return;) Maggiori informazioni sulla parola chiave var nella parte seguente. Possiamo anche aggiungere il codice per la nostra funzione tra la dichiarazione delle variabili e l'istruzione return, come segue: GetCurrentTime function () (var = szTime TimeFormat (Now (), "h: mm: ss tt"); szTime = ReplaceNoCase (szTime, "am", "la mattina"); szTime = ReplaceNoCase (szTime, "pm" , "alla sera"); szTime return;) UDF questo è un esempio molto semplice che non richiede alcun argomento. Ora, a dare un'occhiata a var più in dettaglio. var dichiara una variabile che è locale ad una funzione. Se non abbiamo usato var, per esempio, potremmo effettuare le seguenti operazioni:
Dopo che si chiama myFn (), myVar è a disposizione il codice al di fuori della funzione. Questo perché ogni variabile definita all'interno di cfscript è disponibile anche per CFML. Questa è la programmazione molto approssimativo, perché si potrebbe essere inavvertitamente la creazione o la sovrascrittura di variabili che non erano intenzione di incidere. Per mantenere locali myVar a myFn () in modo tale che essa non può perdite al di fuori della funzione, var uso, come segue:
Ora, il tentativo di utilizzare myVar myFn fuori () genera un errore, che è esattamente ciò che si desidera fare. Tutte le variabili create utilizzando var deve essere inizializzato; ColdFusion genera un errore se non lo sono. E notare, anche, che non è possibile posizionare la parola chiave var ovunque tranne che al vertice di una dichiarazione di funzione. Funzioni restituiscono un valore singolo, come mostra il seguente esempio: myFn function () (return TimeFormat (Now (), "h: mm: ss tt");) Appena cfscript incontra l'istruzione return, ColdFusion interrompe l'esecuzione della funzione e restituisce il valore dopo la parola chiave return al codice chiamante. È anche possibile condizionale restituire valori diversi in base alle diverse circostanze, come nel codice seguente: myFn function () (if (IsDefined ( "Client.myVar")) (return Client.myVar;) else (return TimeFormat (Now (), "h: mm: ss tt");)) Ogni percorso di controllo in una funzione deve restituire un valore o si ottengono risultati incoerenti. Una delle migliori pratiche, pertanto, è quello di definire un valore di ritorno di default e utilizzare una sola istruzione return nella tua dichiarazione della funzione, come segue: myFn function () (var risultato = TimeFormat (Now (), "h: mm: ss tt"); if (IsDefined ( "Client.myVar")) (risultato = Client.myVar;) return risultato;) Maggior parte delle funzioni adottare uno o più argomenti, come mostra il seguente esempio:
I nomi degli argomenti sono definite in un elenco tra le parentesi dopo la dichiarazione di funzione. Vedete usi più avanzati di argomenti più avanti in questo articolo. Nell'esempio precedente viene utilizzato gli argomenti di posizione, il che significa che il primo argomento nella chiamata di funzione è stato passato al primo argomento nella funzione, il secondo nella chiamata è diventato il secondo in funzione, e così via. È possibile anche il nome gli argomenti nella chiamata, se si desidera passare in un ordine diverso, come segue:
Questa sintassi non è molto diffuso, perché è un po 'più difficile da leggere, ma può aiutare, tuttavia, se non si ricorda l'ordine dei parametri di una funzione. Se uno qualsiasi degli argomenti di una chiamata di funzione sono il nome, comunque, tutti gli argomenti devono essere indicati. Funzioni possono essere chiamati ovunque all'interno di un modello di ColdFusion, anche all'interno di un'altra funzione ColdFusion. Prendiamo il seguente esempio:
Una funzione può chiamare anche se stessa. Abbiamo scritto la seguente funzione, per esempio, per calcolare il fattoriale di un numero (un fattoriale saranno definiti in un attimo):
Il fattoriale di 6, per esempio, è di 6 x 5 x 4 x 3 x 2 x 1, o 720. Per calcolare il fattoriale, ci restituisce il numero passato alla funzione, moltiplicato per il prossimo minori fattoriale (perché il fattoriale 6 può essere rappresentato anche come 6 x 5 fattoriale). È necessario prestare attenzione nella creazione di funzioni ricorsive per assicurarsi che si dispone di una condizione di arresto. Nel nostro caso, ci fermiamo la ricorsione quando myNum è 1. Se non costruire una condizione di arresto nella vostra logica, si inserisce la richiesta in un ciclo infinito. Vi mostriamo che le strutture si accede mediante riferimento, mentre le altre variabili si fa riferimento al valore. Lo stesso vale per passare le variabili ad una funzione. Se si passa un numero a una funzione, la funzione ha una copia locale di quel numero, e le eventuali modifiche che fa le funzioni per il numero non si ripetano anche al di fuori della chiamata di funzione. Le strutture sono passato a una funzione di riferimento, tuttavia, così tutte le modifiche che la funzione rende il parametro di struttura può essere visto al di fuori della chiamata di funzione. un articolo presentato da Nina Lachey Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo "UDF struttura" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||
| Online: 289 users browsing the articles directory |
|
|