CFScript
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2006 г. ) |
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 нет.
Ссылки
[ редактировать ]- ^ Надель, Бен (31 мая 2007 г.). «Изучение ColdFusion 8: слава новому оператору ++» .