5

yes|no と true|false を使用する際に、既知の機能またはパフォーマンスの違いはありますか? ColdFusion のドキュメントには、ブール型の属性の値は yes/no で指定されると記載されています。たとえば、<cfargument required="yes|no" ....> yes|no の代わりに true と false を使用しましたが、予期しない機能は見られませんでした。

[編集] 回答に感謝します。おそらく、この場合はもう少し一般的なことを考えています。

ColdFusion のドキュメントには、 cfargument requiredなどの一部のパラメータの期待値は「yes|no」であると記載されています。true|false または「任意のブール値」が期待されるのではなく、yes|no が唯一の期待値として文書化されている理由についての洞察はありますか? いずれかの場合に「はい|いいえ」の状態だけでなく、ブール型を示さないことは少し曖昧に思えます A)「任意のブール値」を想定する B)実際のパフォーマンスの違いがあります。考え?

4

4 に答える 4

9

ColdFusion は、yes/no、true/false、1 (またはゼロ以外の数値)/0 を等しく評価します。これにより、整数を true/false に変換することなく、<cfif myquery.recordcount>または同様にショートカット ブール値を簡単に作成できます。<cfif len(FORM.myVar)>

于 2012-08-08T13:22:02.810 に答える
6

"yes/no"入力する文字数が少なくなります。

"true/false"(および true/false) は、他のプログラミング言語とより一致しています。

パフォーマンスに関しては、CF に関する限り、それらはすべて文字列です。条件付きロジックでそれらを使用しようとするまで、魔法のように java.lang.Boolean などの他のデータ型に変更されません。文字列とブール値の間の変換とその逆の変換は非常に高速です。これは、ほとんどの場合、CF が行うことです。一方が他方よりも速いことを証明する信頼できるテストを見つけるのは難しいでしょう。

コードの保守性/可読性のためには、どちらか一方に固執するのが最善です。

一部の従来の CF タグ機能では、特に「はい/いいえ」が必要です。それらは単に「真/偽」では機能しません。これは CF9+ ではもはや当てはまらないと思います。

ColdFusion ドキュメントが正確または最新であることに依存しないでください。デフォルト/許可値として「はい/いいえ」をリストするほとんどすべてのメソッドは、実際にはあらゆる種類のブール値をサポートしています。「はい/いいえ」、「真/偽​​」、真/偽、1/0など。

ブール値に「はい/いいえ」を使用する私見はクレイジーです。古いCF5時代からの下位互換性。AdobeがJavaブール値を出力するためにまだそれを使用しているとは思えません。

例えば。writeDump( var: (not true) );あなたに「いいえ」を与えます。でも、欲しかったfalse?! うーん。

を呼び出すことで、変数が現在どの Java クラスであるかを知ることができますmyVar.getClass().getName()。これを使用して、魔法のように CF がデータを Boolean から String にキャストし、Boolean に戻すのを見ることができます。

于 2012-08-09T12:44:26.803 に答える
0

実験として、これを試すことができます。私の場合、「yes」を使用しないことを1,000万回繰り返すと、ほとんどの場合、ミリ秒が100ミリ秒少なくなりました。

<cfscript>
bln = true;
starttime = getTickCount();

for(i=0;i<10000000;i++){
if(bln eq true)
  foo="bar";
}
writeOutput(getTickCount()-startTime & '<br />');

starttime = getTickCount();

for(i=0;i<10000000;i++){
if(bln eq "yes")
  foo="bar";
}
writeOutput(getTickCount()-startTime & '<br />');
</cfscript>
于 2012-08-08T13:20:09.240 に答える