предисловие
Это, вероятно, не имеет реального осуществления, но после прочтения another post on coffeescript's 2 switch usages, я решил поиграть с ним и нашел это довольно странный вопрос.Теоретическое CoffeeScript переключатель Заявление Conundrum
CoffeeScript
type = 'guidance'
s = switch
when type is 'guidance'
'g'
when type is 'vulnerability'
'v'
else
'foo'
console.log s #g
transpiled Javascript
var s, type;
type = 'guidance';
s = (function() {
switch (false) {
case type !== 'guidance':
return 'g';
case type !== 'vulnerability':
return 'v';
default:
return 'foo';
}
})();
console.log(s); //g
загадка
То, что я не получаю, что выражения случай компилируются на противоположное значение. Coffeescript when type is 'guidance'
должен перевести на следующий javascript case type === 'guidance'
справа?
Если вы используете s = switch true
, тогда выражения case отображаются правильно case type === 'guidance'
. Независимо от выраженных выражений case javaScript результат будет таким же.
Пожалуйста, перечитайте свой вопрос. Код преобразуется в точную вещь, о которой вы говорите, она должна переместиться. – Pointy
Это опечатка от копирования и вставки. Он был исправлен – jusopi
Я бы не сказал, что это «головоломка». Выполненный результат завершается, и именно так coffeescript решил реализовать его. – naomik