ColdFusion には多くの種類の変数が用意されています。例えば、本コースでは、下記の種類の変数を学習します。
先ほどローカル変数(#LastName# #FirstName#)を画面に表示する方法を学習しましたが、もしも別の種類の変数にも同じ名前の変数がセットされていた場合、例えばURL 変数の#LastName# を呼び出したつもりが、ローカル変数の#LastName# を呼び出してしまったという事にもなりかねません。
ColdFusion には、変数同士を混同することなく種類を特定して呼び出すための接頭辞が用意されています。ローカル変数の場合は、接頭辞「Variables.」を付けて変数名を指定することで、明示的にローカル変数の値を呼び出します。先ほどの実習に当てはめると#Variables.LastName# #Variables.FirstName# となります。
パフォーマンスを考慮するだけでなく、コードの保守のためにも、変数を呼び出す際には適切な接頭辞をつけることが推奨されています。
変数の値に他で設定した変数を代入する場合は、引用符を付けずに変数名を記載します。ColdFusion は引用符のない文字列があった場合はそれを変数として捉え、変数の値を代入します。
以下の例では、ローカル変数num2 の値には15 がセットされます。
<cfset num1=15>
<cfset num2=num1>
変数の値をセットする際に、ある変数を代入して新しい文字列を作成したり、変数と別の変数とをつなげた文字列を作成する場合があります。“変数と変数”や“変数と文字列”の連結文字として&マークを使用します。
以下の例では、変数 Greeting には変数の値と文字列がセットされます。
<cfset FirstName="サムライズ">
<cfset Greeting=Variables.FirstName & " さん、こんにちは">
ローカル変数Greeting には「サムライズ さん、こんにちは」がセットされます。
ColdFusion の開発者は変数をセットする時に、変数に格納される値のタイプ(数字であるか日付であるかなど)を認識する必要がありません。変数にアクセスがあり、何らかのデータタイプが予測される(例えば変数内で計算処理を行った)場合、ColdFusion はその変数を内部で自動的に予測したタイプにキャスト(変換)されます。もし、変数の値のキャストが行えなかった場合、エラーが発生して処理が中断します。
例えば、以下のコードはエラーが発生します。
<cfset FirstName=" サムライズ">
<cfset FullName=Variables.FirstName+" さん、こんにちは">
以下は変数の算術演算が可能な例です。変数NewNum には、ローカル変数のTheNum に指定された値(100)+25 の合計125 がセットされます。
<cfset TheNum="100">
<cfset NewNum=Variables.TheNum+"25">
<cfset TheString=" 新しい番号:" & Variables.NewNum>
この処理の結果として、3 行目の変数TheString には、「新しい番号: 125」という文字列がセットされます。