我正在用Coffee Script编写一个摇滚纸剪刀游戏,而且代码没有像我期望的那样编译。
的CoffeeScript
if choice is opponent_choice then alert "Tie!"
编译到
if (choice === opponent_choice) alert("Tie!");
但我期待
if (choice === opponent_choice) {
alert("Tie!");
}
我需要改变什么来按照我的预期进行编译?
答案 0 :(得分:16)
如果一行上只有一个语句,则不需要大括号。它们功能相同,coffeescript编译器优化输出以使用最少量的字符。
答案 1 :(得分:5)
为什么重要?
要让CS创建一个块/多行then
,您需要实际拥有多行then
,例如:
if choice is opponent_choice
alert "Tie!"
alert "Foo"
编译为:
if (choice === opponent_choice) {
alert("Tie!");
alert("Foo");
}
答案 2 :(得分:3)
改变你的期望,而不是输出。
编辑:添加一些细节
CoffeeScript是一个很好的工具,不仅是编写代码的简短方法(它是),而且它将许多常见模式重新格式化为优秀的javascript。输出通常不如你在javascript中自己编写的那样可读,但是它在清晰度方面失去了它,它在改进的编程模式中得到了提升。
您应该将CoffeeScript视为源,而不是编译输出。您不会梦想编辑其他语言的编译输出吗? (我知道这个类比有点拉伸 - 但重点仍然是,源是读/写和编译输出执行)。
答案 3 :(得分:0)
// Generated by CoffeeScript 1.7.1
我使用这个版本的咖啡,可以按照你期望的方式编译。
(function() {
if (choice === opponent_choice) {
alert("Tie!");
}
}).call(this);
你可以尝试一下。但是,我建议你不要过多关注编译后的输出。没关系。