Ответ 1
&
- это оператор строки concat, AND
и &&
- логические операторы.
<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2>
Я использую Coldfusion. Я хочу объединить две строки в один и тот же структурный ключ, но я продолжаю получать ошибку "не могу преобразовать x в логическое".
Например:
<cfset myStruct.string1 = nodes[1].string1.XmlText>
<cfset mystruct.string2 = nodes[1].string2.XmlText>
Ни одна из следующих работ
<cfset myStruct.concatendatedSring = nodes[1].string1.XmlText AND nodes[1].string2.XmlText>
<cfset myStruct.concatendatedSring = myStruct.string1 AND myStruct.string2>
Почему ни один из методов не работает?
&
- это оператор строки concat, AND
и &&
- логические операторы.
<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2>
В дополнение к ответу Генри, вы также можете объединить две строки, такие как:
<cfset myStruct.concatendatedSring="#myStruct.string1##myStruct.string2#">
Я провел несколько неофициальных тестов на CF10 через 4 разных способа конкатенации строк, и результаты удивляют. Я сделал 50k итераций добавления "HELLO" различными способами. У меня есть некоторые приблизительные данные ниже, от самых медленных до самых быстрых. Эти числа были согласованы по 10 различным запросам, поэтому среднее значение:
string1 = "#string1##string2#"; // ~4800ms
string1 = string1 & string2; // ~ 4500ms
string1 &= string2; // ~4200ms
string1 = createObject("java", "java.lang.StringBuffer").init();
string1.append(string2); // ~250ms
Они падают в том порядке, который я ожидал, но был удивлен тем, насколько быстрее был StringBuffer
. Я чувствую, что вы получите максимальную отдачу от этого при конкатенации больших кругов данных String, таких как CSV или аналогичные. Никакого детального теста, который я выполнил, не взвешивал один вариант над другим в типичных одноразовых операциях.