Рабочий стол > DL Руководство пользователя > CoffeeScript > Просмотр
CoffeeScript Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлен Гуленко Алексей, отредактирован Гуленко Алексей Sep 26, 2016
Метки: 
(нет)

Вы просматриваете старую версию (v. 1) этой страницы.
Последняя версия - v. 7 , последнее редактирование Feb 16, 2017 (просмотр отличий | )
просмотр истории страницы | просмотр следующей версии >>

CoffeeScript - язык скриптования Web-страниц, интерпретируемый либо транслируемый в JavaScript. Предоставляет менее C-подобный синтаксис с меньшим количеством противоречий. (Однако транслируется он "напрямую", и потому изменения затрагивают только элементы синтаксиса.) Основные примеры синтаксиса можно найти на сайте CoffeeScript.

На DL CoffeeScript компилируется в JavaScript (с использованием компилятора версии 1.10.0 и самописного враппера), после чего запускается под PhantomJS 1.9.8 (см. JavaScript).

Особенности

Скобки вокруг списка параметров вызываемой функции необязательны (исключение: пустой список параметров; рекомендуемое использование: только при одном параметре). Последовательные вызовы вкладываются:

CoffeeScript
f a, b, c d, e
JavaScript
f(a, b, c(d, e));

Все сравнения (==, !=) проводятся без приведения типа (по значению); однако, рекомендуется использовать эквивалентные слова-операторы (is, isnt) во избежание путаницы.

Язык поддерживает деструктуризацию объектов и массивов:

CoffeeScript
f = ({a, b}) -> [a, b]
o = {
  a: 5
  b: 6
}
[x, y] = f o
JavaScript
var
  f = function (o) { return [o.a, o.b] },
  o = {
    a: 5,
    b: 6,
  },
  xy = f(o),
  x = xy[0], y = xy[1];

Каждая (по возможности) операция является выражением:

CoffeeScript
fact = (n) ->
  if n < 2
    1
  else
    n * fact n-1
JavaScript
fact = function (n) {
  if (n < 2) {
    return 1;
  } else {
    return n * fact(n - 1);
  }
}

Примеры

a+b
sys = require 'system'

readAll = (fin) ->
  [a, b] = fin.readLine().split ' '
  return {
    a: parseInt(a)
    b: parseInt(b)
  }

printAll = (fout, res) -> fout.writeLine res
calc     = ({a, b}) -> a + b

printAll(sys.stdout, calc readAll sys.stdin)
phantom.exit()

или

a+b (сокращённо)
sys = require 'system'

[a, b] = sys.stdin.readLine().split ' '
console.log parseInt(a) + parseInt(b)
phantom.exit()
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами