如何在coffescript中使用switch进行分配? 尝试了很多方法,但无法使其发挥作用。
item = { name: "ahola" }
arr = "coffee_script"
switch arr
when arr.match /script/
item.type = arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
即使这不起作用
item = { name: "ahola" }
arr = "coffee_script"
switch arr
when arr == "coffee_script"
item.type = arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
也尝试过这种方式
item = { name: "ahola" }
arr = "coffee_script"
item.type = switch arr
when arr.match /script/
arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
最后发现这也不起作用
item = { name: "ahola" }
arr = "coffee_script"
item.type = switch arr
when true
arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
我错过了什么吗?
答案 0 :(得分:4)
switch
in CoffeeScript有两种形式:
switch expr
when expr1
result1
...
else
default_result
和
switch
when expr1
result1
...
else
default_result
当然,这两种形式都是表达式,所以你可以说:
x = switch expr
when val then result
...
和
x = switch
when expr then result
...
switch expr
就像JavaScript switch
:您将expr
的结果与每个when
表达式进行比较,然后执行when
==
到expr
。 switch
的这种形式与:
if(expr == expr1)
result1
else if(expr == expr2)
result2
...
else
default_result
switch ... when
表单执行第一个when expr
expr
为真,所以这是一种奇特的说法:
if(expr1)
result1
else if(expr2)
result2
...
else
default_result
您的所有尝试似乎都在尝试混合switch
的两种形式,随之而来的是混乱。
我认为你正在寻找这样的东西:
arr = "coffee_script"
switch arr
when 'coffee_script'
item.type = arr
...