CFスクリプト

CFScriptは、 ColdFusionプラットフォームにおけるCFMLの拡張です。CFScriptはJavaScriptに似ています。通常のCFMLよりも視覚的および書体的なオーバーヘッドが少ないため、一部のColdFusion開発者はCFScriptを好んでいます。 [説明が必要]

使用法

純粋なスクリプトベースの ColdFusion コンポーネント内にある場合を除き、すべての CFScript コードは次のように CFScript タグ ペア内に含まれている必要があります。

<cfscript> xParam  =  115 ; yParam  =  200 ; =  'FFCC99' ; </cfscript>

関数の簡単な例:

<cfscript>関数 Sum ( a ,  b )  {  var  sum  =  a  +  b ;  return  sum ; } </cfscript>

2 つの関数を含む CFScript のコンポーネントの簡単な例:

コンポーネント{ public void function foo () { WriteOutput ( "メソッド foo() が呼び出されました<br/>" ); }         パブリック関数getString () { var x = "hello" ;戻り値x ; } }          

ColdFusion 11、Railo 4.1以降、Lucee 4.5以降は、CFScriptのcfタグを完全にサポートするよう最大限努めています。すべてのタグを直接置換できるわけではありませんが、スクリプト内のタグの結果は、異なる構文を使用することで実現できる場合が多くあります。例えば、UDFを記述せずにCFSCRIPTでクエリを変数に取り込む方法は以下のとおりです。

<cfscript> qGetData  =  new  Query (); qGetData.setDataSource ( '#Application.datasource#' ); qGetData.setSQL ( 'SELECT column1, column2 FROM table WHERE 1' ); qDateResult  =  qGetData.Execute (). getResult (); </cfscript>

構文

ColdFusion 8以降、CFScriptは「++」、「<="」、「+="」など、他の多くのプログラミング言語で一般的な構文の省略形をサポートしています。 [1]

算術演算子

オペレーター説明
+ - * /基本的な算数: 加算、減算、乗算、除算。

除算では、右オペランドをゼロにすることはできません。

++ --増分と減分。変数を 1 ずつ増加または減少します。

これらの演算子は、式で使用される前に変数の値を変更する事前増分または事後増分(例:x = ++ i)に使用できます。また、式で使用される後に値を変更する事後増分または事後減分(例:x = i++)にも使用できます。例えば、変数 i の初期値が7の場合、式の評価後、x = ++i の x の値は8になりますが、x=i++ の x の値は7になります。どちらの場合も、i の値は8になります。

これらの演算子は、f().a++のような関数を含む式では使用できません。また、-++xのような式も使用できますが、---xや+++xは意味が曖昧なためエラーが発生します。ただし、-(--x)や+(++x)のように括弧を使用して演算子をグループ化することは可能です。

+= -= *= /= %=複合代入演算子。右側の変数は、式の要素と結果変数の両方として使用されます。したがって、式 a += b は a = a +b と等価です。

式には複合代入演算子を 1 つだけ含めることができます。

+ -単項演算: 数値の符号を設定します。
MODまたは%剰余:数値を除数で割った余りを返します。結果は除数と同じ符号を持ちます。演算子の右側の値は整数である必要があります。数値以外の値を使用するとエラーが発生します。実数を指定した場合、ColdFusionは小数部を無視します(例:11 MOD 4.7は3です)。
\整数除算:整数を別の整数で割ります。結果も整数になります。例えば、9\4は2です。右辺のオペランドは0であってはなりません。
^指数:数値をべき乗(指数)した結果を返します。数値とべき乗を区切るにはキャレット文字(^)を使用します。例えば、2^3は8です。底と指数には、実数と負の数の両方を使用できます。ただし、-1^.5のように虚数となる式は、文字列「-1.#IND」になります。ColdFusionは虚数や複素数をサポートしていません。

コメント

CFScript には、単一行コメントと複数行コメントの 2 つの形式のコメントがあります。

// これは 1 行コメントです。//これは 2 番目の 1 行コメントです。
/* これは複数行コメントです。 各行の先頭にコメントインジケータを付ける必要はありません。 この行はコメントの最終行です。 */

トライ/キャッチ

try { throw ( message = "Oops" , detail = "xyz" ); } catch ( any e ) { WriteOutput ( "Error: " & e . message ); rethrow ; } Finally { WriteOutput ( "エラーがなくても実行します" ); }              

スイッチ文

switch ( car ) { case "Nissan" : WriteOutput ( "私は日産を所有しています" ); break ; case "Toyota" : WriteOutput ( "私はトヨタを所有しています" ); break ; default : WriteOutput ( "私はエキゾチックです" ); }            

ループ

forループ

for ( i = 1 ; i <= ArrayLen (配列); i = i + 1 ) { WriteOutput (配列[ i ] ); }       

FOR IN ループ

struct = StructNew (); struct . one = "1" ; struct . two = "2" ; for ( key in struct ) { WriteOutput ( key ); } //出力 onetwo           

whileループ

x = 0 ; while ( x < 5 ) { x = x + 1 ; WriteOutput ( x ); } // 出力: 12345            

Do / whileループ

x = 0 ; do { x = x + 1 ; WriteOutput ( x ); } while ( x <= 0 ); // 出力: 1             

配列のループ

for (配列内の項目) { doSomething (項目); }     

JavaScriptとの違い

CFScriptとJavaScriptは似ていますが、いくつかの重要な違いがあります。以下に、CFScriptとJavaScriptの異なる機能を示します。

  • CFScriptはColdFusionを使用しますが、これはJavaScript式のスーパーセットでもサブセットでもありません。特に、ColdFusion式はビット演算子をサポートしておらず、ColdFusionのMOD演算子または%演算子は、対応するJavaScriptの%演算子とは異なる動作をします。ColdFusionでは、これらの演算子は整数演算を行い、小数部は無視されます。また、ColdFusion式は、JavaScriptではサポートされていないEQV、IMP、CONTAINS、およびDOES NOT CONTAIN演算子もサポートしています。
  • 変数宣言(var キーワード) は、ユーザー定義関数とスレッドでのみ使用されます。
  • CFScript では大文字と小文字は区別されません。
  • すべてのステートメントはセミコロンで終わり、コード内の改行は無視されます。
  • 代入は式ではなく文であるため、代入演算を評価する必要がある状況では使用できません。
  • windowなどの JavaScript オブジェクトはdocument使用できません。
  • CFScript は ColdFusion サーバーのみで処理されます。クライアント側の CFScript は存在​​しません。

参考文献

  1. ^ Nadel, Ben (2007年5月31日). 「ColdFusion 8の学習:新しい++演算子の活用」
  • CFMLスクリプトによるColdFusionページの拡張 - Adob​​e
  • [1]
「https://en.wikipedia.org/w/index.php?title=CFScript&oldid=1251588758」から取得