2010-12-15 51 views
1

在PHP中,我可以这样做: $ var =(int)$ _POST ['var'];ColdFusion支持类型提示吗?

有没有办法显式地将ColdFusion变量设置为整数或字符串?

+1

这不是一个[类型提示](http://php.net/manual/en/language.oop5.typehinting.php)。这是[类型转换](http://php.net/manual/en/language.types.type-juggling.php)(向下滚动,没有锚点)。 – delnan 2010-12-15 17:13:14

回答

7

变量在CF中是无类型的。但如果你要评估一个变量作为一个数字或字符串,你可以这样做:

#Val(<variable>)# 

和字符串

#ToString(<variable>)# 
+0

谢谢,这很好的回答了它。 – Darren 2010-12-15 18:54:34

4

取决于你想要什么样的情况发生了,可以不数据转换,也许你想cfparam?

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

如果form.v不存在或不是数值,那么会引发异常。

您还可以测试一个值是否是数字(或任何其他类型):

<cfif isNumeric(form.v)> 

,你可以“转换”字符串的数值。

<cfset v = val(form.v) /> 
1

除在其他答案中有很好的信息,值得一提的是,您可以使用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