2010-09-01 9 views
20

Używam Coldfusion. Chcę połączyć dwa ciągi znaków w ten sam klucz struct, ale ciągle pojawia się błąd "nie można przekonwertować x na wartość boolowską".Jak połączyć dwa ciągi i zapisać je w tym samym kluczu strukturalnym?

Na przykład:

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

Żadna z następujących pracach

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

Dlaczego ani pracy metoda?

Odpowiedz

46

& to operator konkatycji łańcuchowej, AND i && są operatorami logicznymi.

<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2> 
+0

Yap, w porządku. – ppshein

8

Oprócz odpowiedź Henry'ego, można również łączyć dwie struny tak:

<cfset myStruct.concatendatedSring="#myStruct.string1##myStruct.string2#"> 
+1

Zrobiłem nieoficjalny test na Cf9 w ciągu ostatnich kilku tygodni i byłem zaskoczony, że ta metoda jest * znacznie * wolniejsza dla pojedynczej konkatenacji. To prawie tak źle dla dwóch osób. Myślę, że to z powodu tego, jak CF radzi sobie z obszarami wykonania, ale to jest domysły. –

8

Zrobiłem szereg nieformalnych badań CF10 przez 4 różne sposoby łączenia ciągów i wyniki są zaskakujące. Zrobiłem 50k iteracji dołączania "HELLO" na różne sposoby. Poniżej przedstawiam niektóre dane przybliżone od najwolniejszego do najszybszego. Liczby te były zgodne w 10 różnych wniosków, stąd średnia:

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

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

To spadek w kolejności, że oczekiwano, ale był zaskoczony, jak wiele szybciej StringBuffer było. Sądzę, że wykorzystasz to w maksymalnym łączeniu danych String, takich jak plik CSV lub podobny. Nie ma żadnego szczegółowego testu, który wykonałem, który ważyłby jedną opcję nad drugą w typowych operacjach jednorazowych.

Powiązane problemy