【发布时间】:2013-01-29 05:50:17
【问题描述】:
在 Python 中,可以使用“pass”语句什么都不做:
if true:
pass
coffeescript中是否有类似的说法? 我正在尝试执行 switch 语句,如果满足某些条件,则什么也不做。
switch variable:
when 5 then pass
else do variable
【问题讨论】:
标签: syntax coffeescript
在 Python 中,可以使用“pass”语句什么都不做:
if true:
pass
coffeescript中是否有类似的说法? 我正在尝试执行 switch 语句,如果满足某些条件,则什么也不做。
switch variable:
when 5 then pass
else do variable
【问题讨论】:
标签: syntax coffeescript
我是一个快乐的用户
switch x
when 1
null
when 2
y = 3
else
y = 4
因为null 已经在语言中,并且确实在语义上传输了“无”的含义。
【讨论】:
; 是否会比null 更有效(一点点)?
与 Python 不同,空块(通常)在 CoffeeScript 中有效。所以你可以简单地使用:
switch variable:
when 5 then
else
variable
请注意,如果没有then,它将无法编译,我觉得这有点奇怪。不过,这很普遍:
if x
else if y
something()
else
somethingElse()
是完全有效的 CoffeeScript。
【讨论】:
因为在 CoffeeScript 中每个表达式都有一个值,所以一个 pass 关键字,如果它存在的话,将等价于值 undefined。所以,你可以定义
pass = undefined
然后像在 Python 中一样使用pass:
switch variable
when 5
pass
else
do variable
【讨论】:
我总是为此使用分号:
switch variable
when 5 then ;
else do variable
这是因为在 javascript 中,分号是一个有效的语句,它也恰好什么也不做。
更新:我刚刚想到了另一种有趣的方法。您可以将pass 定义为全局变量并将其设置为undefined:
window.pass = undefined
switch variable
when 5 then pass
else do variable
您唯一需要注意的是使用pass 作为局部变量或重新定义全局pass 变量。那会破坏你的代码。
如果你使用谷歌的闭包编译器,你可以注释这个变量,使它成为一个常量:
`/** @const */ var pass;`
但是它必须放在每个文件的开头。不过,您可以编写自己的预处理器来自动执行此操作。
【讨论】:
这在咖啡脚本中对我来说很有意义:
switch variable
when "a" then doSomething()
when "b" then break
这样编译成下面的js:
switch (variable) {
case "a":
doSomething();
break;
case "b":
break;
}
注意:你不应该像@flow 建议的那样使用 null,因为它会插入一个像这样的不必要的语句
null;
【讨论】:
pass,因为它不能用于 if/else 之类的 pass can。