Trattare con elementi vuoti

Gli elementi vuoti sono elementi all'interno di una lista che non contengono alcun valore. Per vedere come trattare con loro, prendere il seguente elenco:

Come molti elementi sono in myList? Si potrebbe pensare che sei, ma le funzioni di ColdFusion di listino di vedere solo quattro perché ColdFusion conta gli elementi della lista vuota, come quella tra pera e arancio e l'elemento vuoto alla fine della lista, come inesistente. Se avete bisogno di un elemento vuoto, è necessario inserire spazi nella lista, come nel seguente esempio:

Una buona pratica è quello di evitare elementi vuoti, se possibile. ColdFusion-list di funzioni di elaborazione di lavoro diverso rispetto a fare la lista funzioni di elaborazione in molti altri linguaggi, che potrebbero rappresentare un problema di portabilità. Che cosa succede se improvvisamente bisogno di utilizzare un punto e virgola come delimitatore lista al posto di una virgola? Si potrebbe utilizzare ListChangeDelims () come segue:

myList ora contiene "mela, pera, arancia, banana". La cosa interessante ListChangeDelims () è che rimuove automaticamente elementi vuoti. Prendete, per esempio, il seguente elenco:

  

ListChangeDelims () restituisce "mela; pera, arancia, banana". Utilizzando ListChangeDelims (), quindi, è anche un buon modo per rimuovere elementi vuoti, anche se non stai cambiando delimitatori, come segue:

Le liste che abbiamo usato nelle sezioni precedenti sono state tutte in ordine casuale. Se avete bisogno di elementi di un elenco di essere in un ordine particolare, è possibile utilizzare ListSort (), come segue:

Dopo la chiamata ListSort (), myList conterrebbe i seguenti: mela, banana, arancia, pera Come si ListChangeDelims (), ListSort () rimuove gli elementi vuoti. Il secondo argomento di ListSort () è il tipo di ordinamento da eseguire. Questo argomento può prendere uno qualsiasi dei tre seguenti valori:

Numerici: ordinare l'elenco numerico. Se uno qualsiasi elemento della lista non può essere convertito in un numero, ColdFusion genera un errore.

Testo: ordinare l'elenco in ordine alfabetico, ma è sensibile alle maiuscole. Provate a chiamare ListSort () nel seguente elenco:

Pera, mela, banana, pesca

Questa chiamata restituisce il seguente:

Banana, pera, mela, pesca

A case-sensitive sort restituisce sempre lettere maiuscole, prima le lettere minuscole, in quanto tale, qualsiasi parola in tutte le lettere maiuscole sarebbe sorta prima di ogni iniziale parole capped. Solo il fatto che una lettera è maiuscola è sufficiente per garantire che la lettera arriverà prima di ogni lettera minuscola.

Textnocase: ordinare l'elenco in ordine alfabetico, ignorando caso. Chiamando ListSort () nella lista che precede sarebbe tornato il seguente:

mela, banana, pesca, pera

Il terzo argomento di ListSort () può essere ASC o DESC a seconda se si vuole un ascendente o discendente di ordinamento. Supponiamo che lei ha avuto il seguente elenco:

pera, arancia, limone, cedro

Ma supponiamo anche che si desidera utilizzare in una query come la seguente:

SELECT * FROM frutta dove FruitName IN ( 'pera', 'orange', 'limone', 'cedro')

Non si potrebbe utilizzare come segue:

SELECT * FROM frutta dove FruitName IN (myList # #)

Questo perché myList non ha virgolette singole voci intorno alla sua, e il database si genera un errore quando ha cercato di eseguire la query. Prima di utilizzare myList in una query, è necessario qualificare gli elementi della lista da li circonda con le virgolette singole. ColdFusion offre una funzione chiamata ListQualify () di fare proprio questo, come mostra il seguente esempio:

SELECT * FROM frutta dove FruitName IN (# ListQualify (myList, "'")#)

Il secondo attributo descrive la qualificazione, in questo caso, una sola offerta. Array, come fare le liste, memorizzare più valori sotto un unico nome e hanno una libreria di funzioni costruito intorno a loro. A differenza di liste, tuttavia, le matrici memorizzare i dati in compartimenti separati e non solo come una stringa delimitata. Dove le liste sono semplici variabili (che è, sono solo semplici stringhe con delimitatori formalmente definita), le matrici sono variabili complesse, il che significa che può contenere più di un singolo valore e creare compartimenti di programmazione indirizzabile per quei valori. A differenza di una lista, che è una semplice variabile stringa, un array è un tipo speciale di oggetto che viene creato chiamando una funzione denominata ArrayNew (), come segue:

ArrayNew () crea una nuova, un oggetto-array monodimensionale e lo assegna alla variabile myArray. Un array può avere fino a tre dimensioni. Una matrice tridimensionale crea una pila di elementi. Una matrice bidimensionale è come una griglia di elementi. Come si può intuire, una matrice tridimensionale è come un cubo di elementi. Array multidimensionali raramente sono utili a meno che non stai facendo matematica della matrice (che non si dovrebbero fare in ColdFusion comunque). Si fa riferimento a un elemento di matrice attraverso la notazione posizionale, come segue:

 # myArray [2] # 

Questo frammento uscite il secondo elemento dell'array. L'indice di una matrice (il numero tra parentesi quadre) può anche essere una variabile che contiene un valore numerico. Menzionare che gli array iniziano a contare da 1 Maggio sembrare ridondante, ma nella maggior parte dei linguaggi di programmazione come JavaScript-array partono elemento 0. Tenere a mente questo fatto, se mai popolare un array JavaScript utilizzando elementi di matrice ColdFusion. Per aggiungere un elemento alla fine di un array, utilizzare ArrayAppend (), come segue:


   

Si noti la differenza tra ListAppend () e ArrayAppend () nei seguenti esempi:


   

ListAppend () non modifica l'elenco originale, invece, restituisce la lista originale con il nuovo elemento aggiunto. ArrayAppend (), invece, modifica la matrice originale. L'unica cosa che ArrayAppend () sempre restituisce è TRUE, quindi non avrete nemmeno bisogno di memorizzare il valore di ritorno. ColdFusion ha anche un ArrayPrepend () la funzione, come segue:

È anche possibile inserire un nuovo elemento di matrice tra gli elementi già esistenti. Dopo la chiamata ArrayNew () e ArrayAppend () in precedenza in questo articolo, per esempio, guarda myArray come segue:

1: pesche 2: Apple

È possibile inserire un nuovo elemento tra i due usando ArrayInsertAt () come segue:

myArray ha ora un nuovo elemento tra pesca e mela, come mostra il seguente:

1: pesche 2: limone 3: Apple

È anche possibile creare elementi di un array da assegnare direttamente un valore a una posizione, come segue:

Ora ha myArray un quarto elemento, come si può vedere nel seguente risultato:

1: pesche 2: limone 3: Apple 4: mirtillo

È anche possibile saltare gli elementi, come segue:

Questo codice porta ad un altro elemento di matrice in myArray, come illustrato di seguito:

1: pesche 2: limone 3: Apple 4: mirtillo 5:  6: melograno

Si noti che nessun elemento si trova nella posizione 5 in myArray. Questo risultato non significa che l'elemento è vuoto, ma semplicemente non esiste. La differenza tra il bianco ed inesistente a volte è difficile da capire, ma si riduce a questo: il tentativo di utilizzare myArray [5] quando il quinto elemento non esiste viene visualizzato un errore, mentre se il quinto elemento è vuoto, myArray [5 ] restituirà una stringa vuota. È possibile eliminare un elemento da una matrice utilizzando ArrayDeleteAt (), come segue:

Che la linea elimina il sesto punto dalla matrice che descriviamo nella parte precedente. Notare che la nuova lunghezza dell'array è ora cinque, anche se il quinto elemento è definito. Se hai bisogno di eliminare rapidamente tutti gli elementi di un array, utilizzare ArrayClear (), come segue:

Dopo che si chiama ArrayClear (), l'array non ha elementi rimanenti. Che segue è un modo semplice per scoprire se una matrice ha tutti gli elementi:

Questa matrice è vuota.

Questa matrice ha almeno un elemento.

Per trovare il numero specifico di elementi di un array, utilizzare ArrayLen (), come segue:

Entrambi ArrayLen () e ArrayIsEmpty () count elementi indefiniti, quindi fate attenzione, perché di solito non tengono conto di elementi non definiti nel resto del codice. Trovare un elemento in una lista è una semplice questione di chiamare ListFind () o ListFindNoCase (). Lei ha, tuttavia, non di matrice equivalente a base di ListFind (). Invece, è necessario utilizzare un ciclo, come segue:


   
   
   
   

Dopo questo ciclo è finito, i contiene l'indice di matrice che contiene "mela", in questo caso, 3. Una funzione di aggregazione prende un array contenente i numeri come argomento e restituisce un singolo valore che rappresenta alcune caratteristiche di questi numeri. Array ColdFusion hanno quattro funzioni di aggregazione, e sono tutti illustrato nel codice. Si noti che le funzioni di aggregazione sono indicati in grassetto, e che ognuno di loro prende un unico argomento: la matrice contenente i dati devono essere aggregati.


   
   
   
   
 
   
    Somma degli elementi dell'array: # ArraySum (myNumericArray) # 
    Il più piccolo elemento di un array: # ArrayMin (myNumericArray) # 
    Elemento di matrice più grande: # ArrayMax (myNumericArray) # 
    Medio di elementi dell'array: # ArrayAvg (myNumericArray) # 
   
 

Se tutti gli elementi di un array non può essere convertita in un numero, ColdFusion genera un errore se si tenta di utilizzare una funzione di aggregazione. Un'altra caratteristica sono le matrici che elenca fare è non la capacità di sostituire facilmente gli elementi. Supponiamo che myArray appare come segue:

1: pesche 2: limone 3: Apple 4: mirtillo

Per scambiare gli elementi prima e la terza, si usa ArraySwap (), come segue:

myArray sarebbe quindi il seguente aspetto:

1: Apple 2: limone 3: pesca 4: mirtillo

Come per le liste, si può facilmente ordinare un array utilizzando ArraySort (), come segue:

Dopo che si chiama ArraySort (), myArray conterrebbe i seguenti:

1: Apple 2: mirtillo 3: limone 4: pesca

Se tutti gli elementi sono indefiniti nella matrice, come si tenta di utilizzare ArraySort (), ColdFusion genera un errore. Per quanto riguarda ListSort (), il secondo argomento di ArraySort () descrive il tipo di ordinamento che si desidera eseguire. Questo argomento può assumere i seguenti tre valori:

Numerici: Ordina l'array numericamente. Se uno qualsiasi elemento di un array non può essere convertito in un numero, ColdFusion genera un errore.

Testo: ordina l'array in ordine alfabetico, ma è sensibile alle maiuscole. Supponiamo che si chiama ArraySort () sulla matrice seguente:

1: Pear 2: mirtillo 3: Apple 4: pesca

Il presente invito si restituiscono il seguente risultato:

1: Apple 2: Pear 3: mirtillo 4: pesca

Textnocase: ordina l'array in ordine alfabetico, ignorando caso. Chiamando ArraySort () sulla matrice precedente restituisce il seguente risultato:

1: Apple 2: mirtillo 3: pesca 4: Pear

Il terzo argomento di ArraySort () può essere ASC o DESC, a seconda se si vuole un ascendente o discendente di ordinamento. Ogni volta che si aggiunge un elemento ad un array, sei l'allocazione di memoria in ColdFusion Server. A volte, tuttavia, la memoria non è sufficiente è disponibile nella posizione corrente della matrice, se questo accade, l'intero array devono essere riassegnati e commosso. Questa operazione può essere molto costoso in termini di tempo della CPU e della memoria, se hai più di alcuni elementi nella matrice. Per l'amor di efficienza, se si conosce il numero di elementi che un array è quello di contenere, prima di iniziare ad aggiungere a tali siti, possibile utilizzare ArrayResize () per pre-allocare lo spazio di cui avete bisogno, come segue:

Per la massima efficienza nel codice, chiamata ArrayResize () immediatamente dopo ArrayNew (). Elenchi offrono alcune funzioni che gli array non, come ad esempio la capacità di trovare facilmente un elemento. Ma si può anche fare alcune cose facilmente con le matrici che sono difficili con le liste, come la ricerca di una media. Per questo motivo, vi trovate spesso utilizzando una lista di quando è necessario la funzionalità di una matrice e viceversa. Per aggirare questo enigma, è possibile convertire un elenco in un array o un array a una lista utilizzando il ListToArray () e ArrayToList () funzioni, come segue:


   

Queste funzioni possono essere intensivo di memoria per le liste e array di grandi dimensioni, in modo da utilizzare queste due funzioni solo se si ha realmente bisogno di loro. Se il tuo array contiene valori complessi, ArrayToList () genera un errore. Si noti inoltre che quando si converte un elenco in un array utilizzando ListToArray (), ColdFusion rimuove elementi vuoti dalla matrice, ma il contrario non è vero. ArrayToList () conserva tutti gli elementi vuoti nella matrice, magari togliendosi il codice che richiede sia da sincronizzare.

Dopo che si sa come utilizzare gli elenchi e le matrici, si deve decidere cosa fare con loro. Entrambi espongono molte delle stesse funzionalità, in modo che è meglio per quale scopo? Pensate di elenchi più come stringhe multivalore che come effettivo tipi di dati complessi. Elenchi sono buoni per la memorizzazione di set di dati in cui potrebbe essere necessario trovare oggetti in modo rapido. Gli array sono più adatti per i set altamente ordinato di dati, specialmente se si deve coordinare il contenuto di due array. Ricordate anche che le matrici sono l'unico modo efficace per utilizzare le funzioni di aggregazione. È necessario, tuttavia, utilizzare gli elenchi se è necessario memorizzare i dati in una variabile client. Non è possibile utilizzare un array per questo scopo, perché le variabili client non in grado di memorizzare dati complessi. È possibile, tuttavia, convertire l'array a un elenco e quindi memorizzare la lista in una variabile client. Come abbiamo accennato in precedenza in questo articolo, se non è possibile garantire che qualsiasi delimitatore particolare, sta per apparire in elementi della lista, si dovrebbe utilizzare un array per memorizzare i dati, invece. Un array separa i suoi valori gli uni dagli altri, mantenendo ogni valore nel suo vano piuttosto che infilare tutti insieme. Matrici e le liste sono strumenti potenti, se applicate correttamente. Ognuno ha i suoi pro e contro, ma nella maggior parte dei casi, è possibile convertire l'uno all'altro in modo che il suo specifico insieme di funzioni possono essere utilizzate. In questo articolo avete imparato a usare efficacemente entrambe le matrici e le liste, e anche il modo di scegliere tra i due elenchi. sono semplici variabili che contengono più valori separati da delimitatori, e sono utili in cui non è necessario utilizzare le funzioni di aggregazione sui loro valori. Gli array sono variabili complesse che contengono più valori in compartimenti di programmazione indirizzabili, e sono utili in cui le funzioni di aggregazione sono necessari.

un articolo presentato da Albert Niftiger


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "Trattare con elementi vuoti" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 208 users browsing the articles directory