CoffeeScript - switch 语句



switch 语句允许测试一个变量是否等于一个值列表中的某个值。每个值称为一个case,被切换的变量会针对每个 switch case 进行检查。以下是 JavaScript 中switch 的语法。

switch (expression){
   case condition 1: statement(s)
   break;   
   
   case condition 2: statement(s)
   break;
      
   case condition n: statement(s)
   break;
   
   default: statement(s)
}

在 JavaScript 中,每个 switch case 之后,我们必须使用break 语句。如果我们不小心忘记了break 语句,则有可能从一个 switch case 掉到另一个 switch case。

CoffeeScript 中的 Switch 语句

CoffeeScript 通过使用switch-when-else子句的组合来解决这个问题。这里有一个可选的 switch 表达式,后跟 case 语句。

每个 case 语句都有两个子句whenthenwhen 后面跟着条件,then 后面跟着一组语句,如果满足特定条件,则执行这些语句。最后,我们有一个可选的else 子句,其中包含默认条件的操作。

语法

以下是 CoffeeScript 中switch 语句的语法。我们指定没有括号的表达式,并通过保持适当的缩进来分隔 case 语句。

switch expression
   when condition1 then statements
   when condition2 then statements
   when condition3 then statements
   else statements

流程图

CoffeeScript switch statement

示例

以下示例演示了在 CoffeeScript 中使用switch 语句的方法。将此代码保存在名为switch_example.coffee 的文件中。

name="Ramu"
score=75
message = switch 
   when score>=75 then "Congrats your grade is A"
   when score>=60 then "Your grade is B"
   when score>=50 then "Your grade is C"
   when score>=35 then "Your grade is D"
   else "Your grade is F and you are failed in the exam"
console.log message

打开命令提示符并编译 .coffee 文件,如下所示。

c:\> coffee -c switch_exmple.coffee

编译后,它会生成以下 JavaScript 代码。

// Generated by CoffeeScript 1.10.0
(function() {
  var message, name, score;

  name = "Ramu";

  score = 75;

  message = (function() {
    switch (false) {
      case !(score >= 75):
        return "Congrats your grade is A";
      case !(score >= 60):
        return "Your grade is B";
      case !(score >= 50):
        return "Your grade is C";
      case !(score >= 35):
        return "Your grade is D";
      default:
        return "Your grade is F and you are failed in the exam";
    }
  })();

  console.log(message);

}).call(this);

现在,再次打开命令提示符并运行 CoffeeScript 文件,如下所示:

c:\> coffee switch_exmple.coffee

执行后,CoffeeScript 文件会产生以下输出。

Congrats your grade is A

when 子句的多个值

我们还可以通过在 switch case 中使用逗号 (,) 分隔它们来为单个 when 子句指定多个值。

示例

以下示例显示了如何通过为when 子句指定多个值来编写 CoffeeScript switch 语句。将此代码保存在名为switch_multiple_example.coffee 的文件中。

name="Ramu"
score=75
message = switch name
   when "Ramu","Mohammed" then "You have passed the examination with grade A"
   when "John","Julia" then "You have passed the examination with grade is B"
   when "Rajan" then "Sorry you failed in the examination"
   else "No result"
console.log message

打开命令提示符并编译 .coffee 文件,如下所示。

c:\> coffee -c switch_multiple_example.coffee

编译后,它会生成以下 JavaScript 代码。

// Generated by CoffeeScript 1.10.0
(function() {
  var message, name, score;

  name = "Ramu";

  score = 75;

  message = (function() {
    switch (name) {
      case "Ramu":
      case "Mohammed":
        return "You have passed the examination with grade A";
      case "John":
      case "Julia":
        return "You have passed the examination with grade is B";
      case "Rajan":
        return "Sorry you failed in the examination";
      default:
        return "No result";
    }
  })();

  console.log(message);

}).call(this);

现在,再次打开命令提示符并运行 CoffeeScript 文件,如下所示:

c:\> coffee switch_multiple_example.coffee

执行后,CoffeeScript 文件会产生以下输出。

You have passed the examination with grade A 
coffeescript_conditionals.htm
广告