Поддерживает ли ColdFusion хинтинг типа? - PullRequest
1 голос
/ 15 декабря 2010

В PHP я могу сделать: $ var = (int) $ _POST ['var'];

Есть ли способ явно установить переменную ColdFusion в целое число или строку?

Ответы [ 3 ]

7 голосов
/ 15 декабря 2010

Переменные не имеют типа в CF.Хотя, если вы хотите оценить переменную как число или строку, вы можете сделать:

#Val(<variable>)# 

и для строк

#ToString(<variable>)#
4 голосов
/ 15 декабря 2010

В зависимости от того, что вы хотите сделать для данных, которые не могут быть преобразованы, может быть, вы хотите, чтобы cfparam?

<cfparam name="form.v" type="numeric"/>

Это вызовет исключение, если form.v отсутствует или не является числовым.

Вы также можете проверить, является ли значение числовым (или любого другого типа):

<cfif isNumeric(form.v)>

, и вы можете «преобразовать» строку в числовое значение:

<cfset v = val(form.v) />
1 голос
/ 17 декабря 2010

В дополнение к хорошей информации в других ответах, стоит упомянуть, что вы можете использовать isvalid(), чтобы проверить, соответствует ли значение без типа множеству разных критериев:

isvalid('integer',x);
isvalid('float',x);
isvalid('string',x);

... и т.д..Есть также некоторые высокоуровневые, такие как:

isvalid('email',x);
isvalid('telephone',x);

Бывают случаи, когда вы должны принудительно привести типизированное значение к «истинному» типу - например, когда вы хотите передать аргументJava-метод с более чем одной подписью.Вы бы использовали javacast(), вот так:

x = "01";
myJavaFunc.doSomething( x ); // ambiguous -- could be a string or number
myJavaFunc.doSomething( javacast('int', x ) ); // does something
myJavaFunc.doSomething( javacast('string', x ) ); // does something else
...