Строка Coldfusion == true ИЛИ empty == false?
Я использую PHP и JavaScript, но теперь я начал работать над проектом в Coldfusion.
В PHP я использую строку, являющуюся "правдивой", а empty/null - "ложной".
Это не похоже на ColdFusion (в частности, v8).
Я хочу сделать следующую работу, но не могу понять, как заставить CF видеть строку как правдивую:
<cfset x = "path\to\something.cfm">
<cfif x>
x is truthy
<else>
x is falsy
</cfif>
Я всегда получаю ошибку: cannot convert the value "path\to\something.cfm" to a boolean
-
isBoolean()
вид работ, но он не чувствует себя достаточно прочным.
- Кажется, что не существует `isString() - но это все равно будет проблемой, как указано выше
-
YesNoFormat()
странно дает мне ту же ошибку (совершенно противоположность тому, что я хотел бы, хотя это должно было сделать)
Ответы
Ответ 1
ColdFusion обладает некоторыми аналогичными функциями "правдоподобия".
Ниже будет показано значение true
- Строки "true" или "yes" (без учета регистра)
- Любое ненулевое число
- Значение
true
Ниже будет указано значение false
- Строки "false" или "no" (без учета регистра)
- Ноль
- Значение
false
В CF мы обычно используем функцию len()
, чтобы определить, есть ли в ней строка. Поскольку ненулевое число оценивается как "true", это работает.
Ваш псевдокод будет, а затем:
<cfset x = "path\to\something.cfm">
<cfif len(x)>
x is truthy
<else>
x is falsy
</cfif>
Так как ColdFusion конвертирует нули в пустые строки, использование trim()
в сочетании было бы хорошей идеей, например: <cfif len(trim(x))>
.
Нет функции isString()
, но есть isValid()
: isValid("string",x)
YesNoFormat()
просто превращает логическое значение в хорошо отформатированное "Да" или "Нет".
Ответ 2
В дополнение к ответу ale (<cfif len(x)>
), я также хотел указать, что вы также увидите, что люди используют несколько иной синтаксис:
<cfif x neq "">
x is truthy
<cfelse>
x is falsy
</cfif>
Эта инструкция очень близка к вашей первоначальной попытке, но она просто проверяет, не является ли она пустой строкой, а также сравнивает строку, чтобы увидеть, точно ли она (как и ваша первоначальная попытка).
Здесь обсуждается, какой из подходов более эффективен и читаем здесь в разделе "Переполнение стека":
len (x) лучше или x NEQ" " лучше в CFML?
Все субъективное... хотя я предпочитаю метод ale, я также хотел указать на другой подход и на полноту.