Jump to content

CFScript

CFScript — это расширение CFML на платформе ColdFusion. CFScript напоминает JavaScript . ColdFusion Некоторые разработчики предпочитают его, поскольку он требует меньше визуальных и типографских издержек, чем обычный CFML. [ нужны разъяснения ]

Использование

[ редактировать ]

За исключением случаев, когда он находится в компоненте ColdFusion, основанном исключительно на скриптах, весь код CFScript должен содержаться в паре тегов CFScript следующим образом:

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

Простой пример функции :

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

Простой пример компонента в CFScript, содержащего две функции:

component {
    public void function foo() {
        WriteOutput("Method foo() called<br/>");
    }

    public function getString() {
        var x = "hello";
        return x;
    }
}

ColdFusion 11, Railo 4.1+ и Lucee 4.5+ делают все возможное, чтобы полностью поддерживать теги cf в CFScript. Хотя прямые замены для всех тегов могут быть невозможны, часто все же возможно получить результаты тега в скрипте, но с помощью другого синтаксиса. Например, вот как можно получить запрос к переменной в CFSCRIPT без написания UDF :

<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]

Арифметические операторы

[ редактировать ]
Оператор Описание
+ - * / Базовая арифметика: сложение, вычитание, умножение и деление.

При делении правый операнд не может быть нулевым.

++ -- Увеличение и уменьшение. Увеличьте или уменьшите переменную на единицу.

Эти операторы можно использовать для предварительного увеличения или уменьшения (как в x = ++ i), когда переменная изменяется до ее использования в выражении. Их также можно использовать для пост-инкремента или декремента (как в x = i++), когда значение изменяется после его использования в выражении. Если значение переменной i изначально равно 7, например, значение x в x = ++i равно 8 после вычисления выражения, но в x=i++ значение x равно 7. В обоих случаях значение мне становится 8.

Эти операторы нельзя использовать с выражениями, включающими функции, как в f().a++. Кроме того, вы можете использовать такое выражение, как -++x, но ---x и +++x вызывают ошибки, поскольку их значения неоднозначны. Однако вы можете использовать круглые скобки для группировки операторов, например -(--x) или +(++x).

+= -= *= /= %= Сложные операторы присваивания. Переменная справа используется как элемент выражения и как результирующая переменная. Таким образом, выражение a += b эквивалентно a = a +b.

Выражение может иметь только один составной оператор присваивания.

+ - Унарная арифметика: установите знак числа.
МОД или % Модуль: возвращает остаток после деления числа на делитель. Результат имеет тот же знак, что и делитель. Значение справа от оператора должно быть целым числом; использование нечислового значения приводит к ошибке, а если указать действительное число, ColdFusion игнорирует дробную часть (например, 11 MOD 4.7 равно 3).
\ Целочисленное деление: деление целого числа на другое целое число. Результат также является целым числом; например, 9\4 равно 2. Правый операнд не может быть нулевым.
^ Возведение в степень: возвращает результат числа, возведенного в степень (показатель). Используйте символ каретки (^), чтобы отделить число от степени; например, 2^3 равно 8. Действительные и отрицательные числа допускаются как для основания, так и для показателя степени. Однако любое выражение, которое соответствует мнимому числу, например -1^.5, приводит к строке «-1.#IND. ColdFusion не поддерживает мнимые или комплексные числа.

Комментарии

[ редактировать ]

CFScript имеет две формы комментариев: однострочные и многострочные.

// This is a single-line comment.
// This is a second single-line comment.
/* This is a multiline comment.
   You do not need to start each line with a comment indicator.
   This line is the last line in the comment. */

Попробуй/поймай

[ редактировать ]
try {
    throw(message="Oops", detail="xyz");
} catch (any e) {
    WriteOutput("Error: " & e.message);
    rethrow;
} finally {
    WriteOutput("I run even if no error");
}

Оператор переключения

[ редактировать ]
switch (car) {
    case "Nissan":
         WriteOutput("I own a Nissan");
         break;
    case "Toyota":
         WriteOutput("I own a Toyota");
         break;
    default:
         WriteOutput("I'm exotic");
}

Зацикливание

[ редактировать ]

Для цикла

[ редактировать ]
for (i=1; i <= ArrayLen(array); i=i+1) {
    WriteOutput(array[i]);
}

ДЛЯ ВХОДНОГО цикла

[ редактировать ]
struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
    WriteOutput(key);
}
//OUTPUTS onetwo

Пока цикл

[ редактировать ]
x = 0;
while (x < 5) {
    x = x + 1;
    WriteOutput(x);
}
// Outputs: 12345

Цикл Do / while

[ редактировать ]
x = 0;
do {
    x = x + 1;
    WriteOutput(x);
} while (x <= 0);
// Outputs: 1

Цикл по массиву

[ редактировать ]
for (item in array) {
    doSomething(item);
}

Отличия от JavaScript

[ редактировать ]

Хотя CFScript и JavaScript похожи, у них есть несколько ключевых отличий. В следующем списке указаны функции CFScript, которые отличаются от JavaScript:

  • CFScript использует выражение ColdFusion , которое не является надмножеством или подмножеством выражений JavaScript. В частности, выражения ColdFusion не поддерживают побитовые операторы , а оператор ColdFusion MOD или % работает иначе, чем соответствующий оператор % в JavaScript: в ColdFusion оператор выполняет целочисленные арифметические действия и игнорирует дробные части. Выражения ColdFusion также поддерживают операторы EQV, IMP, CONTAINS и DOES NOT CONTAIN, которые не поддерживаются в JavaScript.
  • Объявления переменных (ключевое слово var) используются только в определяемых пользователем функциях и потоках.
  • CFScript не чувствителен к регистру.
  • Все операторы заканчиваются точкой с запятой, а разрывы строк в коде игнорируются.
  • Присваивания — это инструкции, а не выражения, и поэтому их нельзя использовать в ситуациях, требующих оценки операции присваивания.
  • Объекты JavaScript, такие как window и document, недоступны.
  • Только сервер ColdFusion обрабатывает CFScript. Клиентского CFScript нет.
  1. ^ Надель, Бен (31 мая 2007 г.). «Изучение ColdFusion 8: слава новому оператору ++» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 272e6bb7454a9860d68d816fd0424454__1700477820
URL1:https://arc.ask3.ru/arc/aa/27/54/272e6bb7454a9860d68d816fd0424454.html
Заголовок, (Title) документа по адресу, URL1:
CFScript - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)