[英]Coffee Script: if .. is .. then
我正在用Coffee Script编写剪刀纸游戏,并且代码没有按我期望的那样编译。
CoffeeScript
if choice is opponent_choice then alert "Tie!"
编译为
if (choice === opponent_choice) alert("Tie!");
但我期待
if (choice === opponent_choice) {
alert("Tie!");
}
我需要进行哪些更改才能以预期的方式进行编译?
如果一行上只有一个语句,则不需要大括号。 它们在功能上是相同的,并且coffeescript编译器优化输出以使用最少的字符。
为什么这有关系?
对于CS创建块/多行then
你需要实际上有一个多行then
,像这样:
if choice is opponent_choice
alert "Tie!"
alert "Foo"
编译为:
if (choice === opponent_choice) {
alert("Tie!");
alert("Foo");
}
更改您的期望,而不是输出。
编辑:添加一些细节
CoffeeScript是一个很好的工具,不仅可以简化编写代码的方式,而且可以将许多常见的模式重新格式化为优质的javascript。 输出的可读性通常不如您用javascript编写的输出,但输出的内容不清晰,可以通过改进的编程模式获得。
您应该将CoffeeScript视为源,而不是编译后的输出。 您不会梦想编辑其他语言的编译输出吗? (我知道这个类比有点牵强-但重点仍然是,源用于读取/写入,而编译后的输出用于执行)。
// Generated by CoffeeScript 1.7.1
我使用此版本的咖啡,并且可以按照您期望的方式进行编译。
(function() {
if (choice === opponent_choice) {
alert("Tie!");
}
}).call(this);
你可以试试看。 但是,我建议您不要过于注意编译后的输出。 没关系
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.