2016-04-26 20 views
1

誰かがContinueワードでこの奇妙な動作に気付いたことがありますか? Ifステートメント内で使用すると、テンプレート内の次のコードをすべて終了させるようです。cffript/odd動作のIFブロック内のキーワードcoldfusion continue

私はhttp://cflive.net/

などでCFとLuceeでこれをテストした:

<cfscript> 
    writeoutput('test1, loop<br>'); 
    for (x = 0; x > 5; x++) { 
     writeoutput(' gonna continue?'); 
     continue; 
     writeoutput('continued within'); 
    } 
    writeoutput('Out of loop..<br><br>'); 
    writeoutput('test2, if<br>'); 
    oURL = true; 
    if (oURL) { 
     writeoutput(' gonna continue?'); 
     continue; // seems to kill all following code 
     writeoutput('continued within'); 
    } 
    writeoutput(' out of If..'); 
    writeoutput(' end'); 
    for (x = 0; x > 5; x++) { 
     writeoutput('loop:' & x); 
    } 
</cfscript> 
+1

Continueはループ内で残りのコードの処理を中止します。私に正しく働いているようだ。ドキュメントhttp://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0a0e0-7fdf.html#WSc3ff6d0ea77859461172e0811cbec0a0e0-7fe7 –

+3

@Scp - FWIW、私は同じ結果を見ますが、興味があります、ブロックを再構築するのではなく、ifステートメント内で「続行」しますか?通常、continueはループで動作するように設計されています。ループの外側で使用されたときに期待される動作が何であるかはわかりません... – Leigh

+1

'continue'または' break'を使ってサイドループを使うと、次のループがないので 'abort'のように動作します。 – RRK

答えて

1

私はループ構造の外で使用する場合、それはすべて、次のコードを殺す想像。

cfcontinueのアイデアは、コマンドに続くすべてのコードの実行をスキップし、ループの先頭で処理を再開することです。

私は、cfmlエンジンがcfcontinueコマンドに到達するとコードの実行を停止し、ループの外側では未知の処理を再開できる場所を探していると思います。

+0

(Edit)@SCP - また、CFMLで同等のif文を試すと、CFはコンテキスト検証エラーをスローします。「タグはcfloopタグ内にネストする必要があります。 cfscriptは、意図していないかサポートされていない方法でコマンドが使用されていることを警告しないということです。 – Leigh

関連する問題