2016-04-26 2 views
1

Кто-нибудь заметил это странное поведение с продолжением слова. Кажется, он убивает весь следующий код в шаблоне, когда он используется в инструкции If.ключевое слово coldfusion continue внутри блока IF в cfscript/нечетное поведение

Я испытал это в МВ и Lucee с http://cflive.net/

например:

<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

Продолжение отменяет обработку остальной части кода в цикле. Кажется, что я правильно работаю. Документы http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0a0e0-7fdf.html#WSc3ff6d0ea77859461172e0811cbec0a0e0-7fe7 –

+3

@Scp - FWIW, я вижу тот же результат, но .. мне любопытно, зачем использовать ' continue' внутри оператора if вместо реструктуризации if-блока? Обычно продолжение предназначено для работы с циклами. Не уверен, что ожидаемое поведение при использовании вне цикла ... – Leigh

+1

Я думаю, что использование 'continue' или' break' out side loop будет работать как 'abort', так как нет следующего цикла для перехода. – RRK

ответ

1

Я предположил бы, что он убивает все следующий код, если используется вне конструкции цикла.

Идея cfcontinue состоит в том, чтобы пропустить выполнение всего кода, следующего за командой, и возобновить обработку в верхней части цикла.

Я думаю, что происходит то, что движок cfml прекращает выполнение кода после того, как он получает команду cfcontinue и ищет, где он может возобновить обработку, которая неизвестна, если вне цикла.

+0

(Редактировать) @SCP. Кроме того, если вы попытаетесь выполнить эквивалентный оператор if в CFML, CF выдает ошибку проверки контекста «Тег должен быть вложен внутри тега cfloop». Таким образом, это звучит как настоящая проблема или ошибка, если вы это сделаете, это то, что cfscript не предупреждает, что команда используется таким образом, который не был предназначен или не поддерживался. – Leigh

Смежные вопросы