web-dev-qa-db-ja.com

2つの文字列を連結して同じ構造体キーに保存するにはどうすればよいですか

Coldfusionを使用しています。 2つの文字列を同じstructキーに連結したいのですが、「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>

どちらの方法も機能しないのはなぜですか?

28
Mohamad

&は文字列連結演算子、ANDおよび&&はブール演算子です。

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

Henryの答えに加えて、次のように2つの文字列を連結することもできます。

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

文字列を連結する4つの異なる方法を使用して、CF10で多くの非公式のテストを行いましたが、結果は驚くべきものです。私は、さまざまな方法で「HELLO」を追加することを5万回繰り返しました。以下に、最も遅いものから最も速いものの順に、いくつかの大まかなデータを示します。これらの数値は、10の異なるリクエストで一貫していたため、平均は次のとおりです。

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

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

これらは私が予想した順序に該当しますが、StringBufferがどれほど高速であるかに驚きました。 CSVなどのような大規模な文字列データを連結するときに、これを最大限に活用すると思います。典型的な1回限りの操作では、1つのオプションと他のオプションの比較検討を行った詳細なテストはありません。

10
Tristan Lee