繁体   English   中英

Coffee Script:如果..是..则

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM