CoffeeScript - язык скриптования Web-страниц, интерпретируемый либо транслируемый в JavaScript. Предоставляет менее C-подобный синтаксис с меньшим количеством противоречий. (Однако транслируется он "напрямую", и потому изменения затрагивают только элементы синтаксиса.) Основные примеры синтаксиса можно найти на сайте CoffeeScript.
На DL CoffeeScript компилируется в JavaScript (с использованием компилятора версии 1.10.0 и самописного враппера), после чего запускается под PhantomJS 1.9.8 (см. JavaScript).
Особенности
Скобки вокруг списка параметров вызываемой функции необязательны (исключение: пустой список параметров; рекомендуемое использование: только при одном параметре). Последовательные вызовы вкладываются:
Все сравнения (==, !=) проводятся без приведения типа (по значению); однако, рекомендуется использовать эквивалентные слова-операторы (is, isnt) во избежание путаницы.
Язык поддерживает деструктуризацию объектов и массивов:
f = ({a, b}) -> [a, b]
o = {
a: 5
b: 6
}
[x, y] = f o
var
f = function (o) { return [o.a, o.b] },
o = {
a: 5,
b: 6,
},
xy = f(o),
x = xy[0], y = xy[1];
Каждая (по возможности) операция является выражением:
fact = (n) ->
if n < 2
1
else
n * fact n-1
fact = function (n) {
if (n < 2) {
return 1;
} else {
return n * fact(n - 1);
}
}
Примеры
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()
или
sys = require 'system'
[a, b] = sys.stdin.readLine().split ' '
console.log parseInt(a) + parseInt(b)
phantom.exit()