Pourquoi est-ce? Sorties de la page.
"Oui est égal à vrai." p> p>
6 Réponses :
dans ColdFusion "Oui" et "TRUE" Les deux sont convertis en valeur numérique 1 lorsqu'il est utilisé comme expression p>
ColdFusion a des types de variables dynamiques et quelques conversions étranges au moment de l'exécution peuvent être utilisées comme booléens, dates et numéros sans les jeter à la fois des avantages et des inconvénients. p>
Si vous devez faire une simple comparaison de chaînes, vous pouvez utiliser la fonction Comparer () intégrée. p>
Ben Nadel donne un bon résumé des options de comparaison des chaînes ici - http://www.bennadel.com/blog/236-coldfusion-string-comparison-compare-vs-equals-vs-compareto-.htm P>
Les réponses de Chris 'et de Keshav sont correctes, ColdFusion convertit les valeurs. Voici la documentation officielle sur les conversions de données ColdFusion.
conversion entre types p>
Dans ColdFusion, "Oui" et "TRUE" sont interprétés comme un bit (1) également "non" et "false" sont interprétés comme un bit (0), donc "oui" et "vrai" sont égaux. de la même manière
Vous devez être très prudent avec les comparaisons vrai / faux. Ils doivent être simples, mais parfois, selon la façon dont vous écrivez votre code, les évaluations de VRAI / FAUX peuvent être différents. En à peu près toutes les définitions, FALSE sera toujours 0 bit (et non dans CF). Et TRUE sera 1 bit, mais aussi Oui et un nombre non-0. Donc, 42 est toujours vrai. Et -1 est toujours vrai (remerciements spéciaux MS Access Oui / Non :-p types de données).
Comme FAUX est toujours 0 (ou NON ou FAUX), il est généralement préférable de vérifier ou pas faux NEQ 0 que de vérifier TRUE. Cependant, même avec cela, vous avez toujours attention. Déterminez ce que vous voulez examiner TRUE et faire une évaluation complète pour cela. ColdFusion parfois des variables jette VRAI et FAUX différemment. Regardez les résultats du code suivant: p>
(grâce à Bert Dawson et Jamie Jackson pour leur script querySim.) P>
<!--- set up the fake query: --->
<cfscript>
/**
* Accepts a specifically formatted chunk of text, and returns it as a query object.
* v2 rewrite by Jamie Jackson
*
* @param queryData Specifically format chunk of text to convert to a query. (Required)
* @return Returns a query object.
* @author Bert Dawson (bert@redbanner.com)
* @version 2, December 18, 2007
*/
function querySim(queryData) {
var fieldsDelimiter="|";
var colnamesDelimiter=",";
var listOfColumns="";
var tmpQuery="";
var numLines="";
var cellValue="";
var cellValues="";
var colName="";
var lineDelimiter=chr(10) & chr(13);
var lineNum=0;
var colPosition=0;
// the first line is the column list, eg "column1,column2,column3"
listOfColumns = Trim(ListGetAt(queryData, 1, lineDelimiter));
// create a temporary Query
tmpQuery = QueryNew(listOfColumns);
// the number of lines in the queryData
numLines = ListLen(queryData, lineDelimiter);
// loop though the queryData starting at the second line
for(lineNum=2; lineNum LTE numLines; lineNum = lineNum + 1) {
cellValues = ListGetAt(queryData, lineNum, lineDelimiter);
if (ListLen(cellValues, fieldsDelimiter) IS ListLen(listOfColumns,",")) {
QueryAddRow(tmpQuery);
for (colPosition=1; colPosition LTE ListLen(listOfColumns); colPosition = colPosition + 1){
cellValue = Trim(ListGetAt(cellValues, colPosition, fieldsDelimiter));
colName = Trim(ListGetAt(listOfColumns,colPosition));
QuerySetCell(tmpQuery, colName, cellValue);
}
}
}
return( tmpQuery );
}
</cfscript>
<!--- populate the fake query --->
<cfscript>
fakeQuery = querySim('
testID , isThisTruthy
1 | TRUE
2 | FALSE
3 | YES
4 | NO
5 | 1
6 | 0
7 | -1
8 | 42
');
</cfscript>
<!--- End of the fake query setup --->
<!--- Dump the fakeQuery so we can see what we've got. --->
<cfdump var="#fakeQuery#" label="fakeQueryInfo" />
<!---
Not really necessary since the query is created above. Just included for
clarity, as everything above this line can really be ignored if connecting
to a real query.
--->
<cfquery name="truthyCheck" dbtype="query">
SELECT testID, isThisTruthy
FROM fakeQuery
</cfquery>
<!--- Begin the truthy statements. --->
<br/><br/>
<strong>cfif isThisTruthy >></strong>
<!---
This one has an implicit evaluation of TRUE or FALSE that seems to be based on a
broader (and more accurate) definition of what should be TRUE or FALSE. However,
it's much less clear in what you're trying to do.
--->
<br/>
<cfoutput query="truthyCheck">
#testID#: #isThisTruthy# | <cfif isThisTruthy>True<cfelseif NOT isThisTruthy>False<cfelse>NULL</cfif> <br/>
</cfoutput>
<br/><br/>
<!---
The rest of these appear to actually evaluate down to a bit (using the standard
1,0,YES,NO,TRUE,FALSE definitions) and then they do an integer comparison. This
may not be completely what you're looking for.
--->
<strong>cfif isThisTruthy IS TRUE >></strong>
<br/>
<cfoutput query="truthyCheck">
#testID#: #isThisTruthy# | <cfif isThisTruthy IS TRUE>True<cfelseif isThisTruthy IS NOT TRUE>False<cfelse>NULL</cfif>
<!--- 1 IS 1 IS TRUE, but -1 IS 1 IS FALSE. --->
<br/>
</cfoutput>
<br/><br/>
<strong>cfif isThisTruthy EQ 1 >></strong>
<br/>
<cfoutput query="truthyCheck">
#testID#: #isThisTruthy# | <cfif isThisTruthy EQ 1>True<cfelseif isThisTruthy NEQ 1>False<cfelse>NULL</cfif>
<!--- 1 EQ 1 IS TRUE, but -1 EQ 1 IS FALSE. --->
<br/>
</cfoutput>
<br/><br/>
<strong>cfif isThisTruthy NEQ 0 >></strong>
<br/>
<cfoutput query="truthyCheck">
#testID#: #isThisTruthy# | <cfif isThisTruthy NEQ 0>True<cfelseif isThisTruthy EQ 0>False<cfelse>NULL</cfif>
<!--- 1 NEQ 0 and -1 NEQ 0 both evaluate to the same. --->
<br/>
</cfoutput>
<br/><br/>
<strong>cfif isThisTruthy NEQ FALSE >></strong>
<br/>
<cfoutput query="truthyCheck">
#testID#: #isThisTruthy# | <cfif isThisTruthy NEQ FALSE>True<cfelseif isThisTruthy EQ FALSE>False<cfelse>NULL</cfif>
<!--- 1 NEQ 0 and -1 NEQ 0 both evaluate to the same. --->
<br/>
</cfoutput>
Voici un article assez succinct sur la façon dont la ColdFusion gère la vérité. ColdfusionMuse.com/index.cfm/2010/2/ 5 / booleans.and.coldfusio n
Oui, 1 et True sont la même chose dans Coldfusion. Comme présenté dans ce lien: p>
Une deuxième seconde recherche: Coldfusion "Oui" Equal "Vrai" Tourné: MaisonOffusion .COM / CFDOCS1 / CFMX / ...