2010-12-15 50 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