ti-enxame.com

Como concatenar duas seqüências e armazená-las na mesma chave struct

Estou usando o Coldfusion. Quero concatenar duas strings na mesma chave struct, mas continuo recebendo um erro de "não é possível converter x em um booleano".

Por exemplo:

<cfset myStruct.string1 = nodes[1].string1.XmlText>
<cfset mystruct.string2 = nodes[1].string2.XmlText>

Nenhum dos seguintes trabalhos

<cfset myStruct.concatendatedSring = nodes[1].string1.XmlText AND nodes[1].string2.XmlText>
<cfset myStruct.concatendatedSring = myStruct.string1 AND myStruct.string2>

Por que nenhum dos métodos funciona?

28
Mohamad

& é o operador concat de strings, AND e && são operadores booleanos.

<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2>
56
Henry

Além da resposta de Henry, você também pode concatenar duas seqüências de caracteres como esta:

<cfset myStruct.concatendatedSring="#myStruct.string1##myStruct.string2#">
10
Gert Grenander

Eu fiz vários testes informais no CF10 através de quatro maneiras diferentes de concatenar seqüências de caracteres e os resultados são surpreendentes. Eu fiz 50k iterações de anexar "OLÁ!" De várias maneiras. Incluí abaixo alguns dados aproximados, da ordem mais lenta à mais rápida. Esses números foram consistentes em 10 solicitações diferentes, daí a média:

string1 = "#string1##string2#"; // ~4800ms
string1 = string1 & string2; // ~ 4500ms
string1 &= string2; // ~4200ms

string1 = createObject("Java",  "Java.lang.StringBuffer").init();
string1.append(string2); // ~250ms

Eles caem na ordem que eu esperava, mas fiquei surpreso com o quão mais rápido o StringBuffer foi. Eu sinto que você vai tirar o máximo proveito disso ao concatenar grandes quantidades de dados String, como um CSV ou similar. Não há nenhum teste detalhado que realizei que pesasse uma opção sobre a outra em operações pontuais típicas.

10
Tristan Lee