Lidar com elementos vazios

Os elementos vazios são elementos dentro de uma lista que não contêm nenhum valor. Para ver como lidar com eles, pegue a lista a seguir:

Quantos elementos estão em myList? Você pensaria que seis, mas as funções do ColdFusion lista ver apenas quatro porque ColdFusion conta elementos da lista vazia como a existente entre pêra e laranja eo elemento vazio no final da lista, como inexistente. Se você precisa de um elemento vazio, você deve colocar espaços na lista, como no exemplo a seguir:

Uma boa prática é evitar elementos vazios, se possível. ColdFusion lista de funções de processamento de trabalhar de forma diferente do que a lista de funções de processamento, na maioria dos outros idiomas e pode apresentar um problema de portabilidade. E se de repente você precisava usar uma vírgula como delimitador de sua lista, em vez de uma vírgula? Você usaria ListChangeDelims () da seguinte forma:

myList agora contém "maçã, pêra, laranja, banana". A coisa interessante sobre ListChangeDelims () é que ele remove automaticamente os elementos vazios. Tomemos, por exemplo, a seguinte lista:

  

ListChangeDelims () irá retornar "maçã, pêra, laranja, banana". Usando ListChangeDelims (), portanto, é também uma boa maneira de remover elementos vazios mesmo se você não está mudando delimitadores, como segue:

As listas que estamos utilizando nas partes anteriores foram todas em ordem aleatória. Se você precisar de itens em uma lista de estar em uma ordem específica, você pode usar ListSort (), como segue:

Depois de chamar ListSort (), myList deverá conter o seguinte: maçã, banana, laranja, pêra Como não ListChangeDelims (), ListSort () remove elementos vazios. O segundo argumento para ListSort () é o tipo de classificação para executar. Este argumento pode ter qualquer um dos três valores seguintes:

Numérico: Classifica a lista numericamente. Se algum elemento da lista não pode ser convertido para um número, ColdFusion gera um erro.

Texto: Classifica a lista em ordem alfabética, mas é sensível. Tente chamar ListSort () na lista a seguir:

Pêra, maçã, banana, pêssego

Esta chamada retornará o seguinte:

Banana, pêra, maçã, pêssego

A jurisprudência sensível à classificação sempre retorna letras maiúsculas antes de letras minúsculas, como tal, todas as palavras em letras maiúsculas que antes de qualquer tipo inicial de palavras limitadas. Só o fato de que uma letra é maiúscula é suficiente para garantir que a carta chegará antes de qualquer letra minúscula.

Textnocase: Classifica a lista em ordem alfabética, ignorando a caixa. ListSort Calling () na lista anterior que voltaria a seguinte redacção:

maçã, banana, pêssego, pêra

O terceiro argumento para ListSort () pode ser ASC ou DESC, dependendo se você quer uma crescente ou decrescente de classificação. Suponha que você tivesse a seguinte lista:

pêra, laranja, limão, limão

Mas suponha, também, que você queria usá-lo em uma consulta como a seguinte:

SELECT * FROM frutas WHERE FruitName IN ( 'pêra', 'laranja', 'limão', 'limão')

Você não pode simplesmente usá-lo como segue:

SELECT * FROM frutas WHERE FruitName IN (myList # #)

Isso porque myList não tem aspas simples em torno de seus itens, eo banco de dados jogaria um erro quando ele tentou executar a consulta. Antes de utilizar myList em uma consulta, você deve qualificar os elementos da lista, envolvendo-o com aspas simples. ColdFusion oferece uma função chamada ListQualify () para fazer exatamente isso, como mostra o exemplo a seguir:

SELECT * FROM frutas WHERE FruitName IN (# ListQualify (myList, "'")#)

O segundo atributo descreve as eliminatórias, neste caso, uma única proposta. Matrizes, como listas de tarefas, armazenar vários valores sob um nome único e têm uma biblioteca de funções construída em torno deles. Ao contrário de listas, porém, matrizes de armazenamento de dados em compartimentos separados e não apenas como uma seqüência de caracteres delimitado. Onde listas são variáveis simples (ou seja, eles são apenas cordas simples com delimitadores formalmente definidas), as matrizes são variáveis complexas, o que significa que eles podem conter mais de um único valor e criar compartimentos programaticamente endereçável para esses valores. Ao contrário de uma lista, que é uma variável de cadeia simples, um array é um tipo especial de objeto que é criado chamando uma função chamada ArrayNew (), como segue:

ArrayNew () cria um novo, um objeto-dimensional array e atribui-lo para o myArray variável. Uma matriz pode ter até três dimensões. Uma matriz unidimensional cria uma pilha de elementos. Uma matriz bidimensional é como uma grade de elementos. Como você provavelmente pode adivinhar, uma matriz de três dimensões é como um cubo de elementos. Arrays multidimensionais são raramente úteis a menos que você está fazendo matemática matriz (que ninguém deve ser feito em ColdFusion anyway). Você se refere a um elemento da matriz através de notação posicional, como segue:

 # myArray [2] # 

Este trecho de saída o segundo elemento da matriz. O índice de uma matriz (o número entre colchetes) também pode ser uma variável que contém um valor numérico. Mencionando que matrizes de começar a contar em 1 pode parecer redundante, mas na maioria das linguagens de computador, como JavaScript arrays começam no elemento 0. Tenha isso em mente, se você nunca preencher uma matriz JavaScript utilizando elementos da matriz ColdFusion. Para adicionar um elemento ao final de uma matriz, use ArrayAppend (), como segue:


   

Observe a diferença entre ListAppend () e ArrayAppend () nos exemplos a seguir:


   

ListAppend () não alterar a lista original, em vez disso, ele retorna a lista original com o novo elemento adicionado. ArrayAppend (), no entanto, modifica a matriz original. A única coisa que ArrayAppend () retorna sempre é verdadeiro, então você não precisa armazenar o valor de retorno. ColdFusion ArrayPrepend também tem uma função (), como segue:

Você também pode inserir um novo elemento da matriz entre elementos já existentes. Depois de chamar ArrayNew () e ArrayAppend () no início deste artigo, por exemplo, myArray é o seguinte:

1: pêssego 2: maçã

Você pode inserir um elemento novo entre os dois, usando ArrayInsertAt () da seguinte forma:

myArray tem agora um novo elemento entre pêssego e maçã, como mostra o seguinte:

1: pêssego 2: limão 3: maçã

Você também pode criar elementos de matriz diretamente atribuir um valor a uma posição, como segue:

Agora myArray tem um quarto elemento, como você pode ver no seguinte resultado:

1: pêssego 2: limão 3: maçã 4: mirtilo

Você também pode ignorar os elementos, como segue:

Esse código leva a outro elemento da matriz em myArray, como mostra o seguinte:

1: pêssego 2: limão 3: maçã 4: mirtilo 5:  6: romã

Observe que nenhum elemento está na posição 5, em myArray. Esse resultado não significa que o elemento é branco, ele simplesmente não existe. A diferença entre branco e inexistente vezes é difícil de entender, mas se resume a isto: Tentando usar myArray [5], quando o quinto elemento não existir irá lançar um erro, enquanto que se o quinto elemento está em branco, myArray [5 ] retornará uma seqüência de caracteres em branco. Você pode excluir um item de uma matriz usando ArrayDeleteAt (), como segue:

Essa linha elimina o sexto item da array que descrevemos na parte anterior. Observe que o novo tamanho da matriz é agora cinco, embora o quinto elemento é indefinido. Se você precisa eliminar rapidamente todos os elementos de uma matriz, use ArrayClear (), como segue:

Depois que você chamar ArrayClear (), a matriz tem elementos restantes. A seguir é uma maneira fácil de descobrir se uma matriz tem quaisquer elementos:

Esta matriz está vazia.

Esta matriz tem pelo menos um elemento.

Para encontrar o número específico de elementos em uma matriz, use ArrayLen (), como segue:

Ambos ArrayLen () e ArrayIsEmpty () contagem de elementos indefinidos, que deve ter cuidado porque geralmente não têm em conta os elementos indefinidos no resto do seu código. Encontrando um item em uma lista é uma simples questão de chamar ListFind () ou ListFindNoCase (). Você tem, no entanto, nenhuma matriz equivalente de base para ListFind (). Em vez disso, você deve usar um loop, como segue:


   
   
   
   

Após este ciclo está terminado, eu contém o índice da matriz que contém "maçã", neste caso, 3. Uma função de agregação toma uma matriz contendo os números como um argumento e retorna um valor único que represente alguma característica desses números. ColdFusion matrizes têm quatro funções agregadas, e todas elas são mostradas no código. Note-se que as funções agregadas são exibidas em negrito, e que cada um deles ter um único argumento: a matriz contendo os dados a serem agregados.


   
   
   
   
 
   
    Soma dos elementos da matriz: # ArraySum (myNumericArray) # 
    O menor elemento da matriz: # ArrayMin (myNumericArray) # 
    O maior elemento da matriz: # ArrayMax (myNumericArray) # 
    Média de elementos da matriz: # ArrayAvg (myNumericArray) # 
   
 

Se algum dos elementos em uma matriz não pode ser convertido para um número, ColdFusion gera um erro se você tentar usar uma função agregada. Outra característica que matrizes que as listas não é a capacidade de trocar facilmente elementos. Suponha que myArray é o seguinte:

1: pêssego 2: limão 3: maçã 4: mirtilo

Para trocar os primeiro e terceiro, você usaria ArraySwap (), como segue:

myArray, então, olhar como se segue:

1: Apple 2: limão 3: pêssego 4: mirtilo

Tal como acontece com as listas, você pode facilmente classificar um array usando ArraySort (), como segue:

Depois que você chamar ArraySort (), myArray deverá conter o seguinte:

1: Apple 2: mirtilo 3: limão 4: pêssego

Se todos os elementos indefinidos estão na matriz como você tenta usar ArraySort (), ColdFusion gera um erro. Quanto ListSort (), o segundo argumento para ArraySort () descreve o tipo de classificação que você deseja executar. Este argumento pode ter três valores seguintes:

Numérico: Ordena a matriz numericamente. Se algum elemento da matriz não pode ser convertido para um número, ColdFusion gera um erro.

Texto: Ordena a matriz em ordem alfabética, mas é sensível. Suponha que você chame ArraySort () sobre a matriz a seguir:

1: Pêra 2: mirtilo 3: Apple 4: pêssego

Esta chamada retornará o seguinte resultado:

1: Apple 2: Pear 3: mirtilo 4: pêssego

Textnocase: Ordena a matriz em ordem alfabética, ignorando a caixa. ArraySort Calling () na matriz anterior retornaria o seguinte resultado:

1: Apple 2: mirtilo 3: pêssego 4: Pear

O terceiro argumento para ArraySort () pode ser ASC ou DESC, dependendo se você quer uma crescente ou decrescente de classificação. Sempre que você adiciona um elemento de uma matriz, você está alocando memória no ColdFusion Server. Às vezes, porém, não há memória suficiente disponível no local atual da matriz, se isso acontecer, toda a matriz deve ser realocado e movido. Esta operação pode ser muito caro em termos de tempo de CPU e uso de memória, se tiver mais do que alguns elementos de sua matriz. Por razões de eficiência, se você souber o número de elementos que uma matriz deve conter antes de adicioná-los, você pode usar ArrayResize () para pré-alocar o espaço de que necessita, como segue:

Para máxima eficiência em seu código, chamada ArrayResize () imediatamente após ArrayNew (). Listas de oferecer certas características que as matrizes não, tais como a capacidade de encontrar facilmente um elemento. Mas você também pode fazer algumas coisas facilmente com matrizes que são difíceis com listas, tais como encontrar uma média. Por esta razão, muitas vezes você encontrar-se com uma lista quando você precisar a funcionalidade de uma matriz e vice-versa. Para contornar este dilema, você pode converter uma lista para uma matriz ou uma matriz para uma lista usando o ListToArray () e ArrayToList () funções, como segue:


   

Estas funções podem ser muita memória para grandes listas e matrizes, para usar estas duas funções somente se você realmente precisa deles. Se a matriz contém valores complexos, ArrayToList () gera um erro. Note também que quando você converter uma lista para um array usando ListToArray (), ColdFusion remove elementos vazios da matriz, mas o inverso não é verdadeiro. ArrayToList () preserva os elementos vazios na matriz, possivelmente jogando fora o código que exige tanto para ser sincronizado.

Depois que você sabe como usar listas e arrays, você precisa decidir o que fazer com eles. Tanto a expor grande parte da mesma funcionalidade, de modo que é melhor para quê? Pense mais listas como múltiplo seqüências de reais como tipos de dados complexos. As listas são boas para armazenar conjuntos de dados em que você pode necessitar para localizar itens rapidamente. Matrizes são mais adequadas para os conjuntos altamente ordenada de dados, especialmente se você deve coordenar o conteúdo das duas matrizes. Lembre-se, também, que as matrizes são a única forma eficaz de utilizar funções de agregação. Você deve, entretanto, as listas de usar se você deve armazenar dados em uma variável do cliente. Você não pode usar um array para esse fim, porque as variáveis do cliente não pode armazenar dados complexos. Você pode, entretanto, converter a matriz para uma lista e, em seguida, armazenar a lista em uma variável de clientes. Como mencionado anteriormente neste artigo, se você não pode garantir que qualquer delimitador especial vai aparecer na lista de itens, você deve usar uma matriz para armazenar os dados em seu lugar. Uma matriz separa seus valores de um outro, mantendo cada valor em seu próprio compartimento, em vez de amarrar todos juntos. Arrays e listas são ferramentas poderosas, se aplicada corretamente. Cada um tem seus prós e contras, mas na maioria dos casos, você pode converter um ao outro para que seu conjunto específico de funções podem ser utilizadas. Neste artigo você aprendeu a usar eficazmente as duas matrizes e listas, e também como escolher entre As duas listas. simples são variáveis que contêm vários valores separados por delimitadores, e eles são úteis quando você não precisa usar funções agregadas aos seus valores. Matrizes são variáveis complexas que contêm vários valores em compartimentos programaticamente endereçável, e eles são úteis em funções agregadas são necessários.

um artigo submetido por Albert Niftiger


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Lidando com elementos vazios" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 415 users browsing the articles directory