rox*_*xxy 5 javascript switch-statement coffeescript
如何在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"
Run Code Online (Sandbox Code Playgroud)
即使这不起作用
item = { name: "ahola" }
arr = "coffee_script"
switch arr
when arr == "coffee_script"
item.type = arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
Run Code Online (Sandbox Code Playgroud)
也试过这种方式
item = { name: "ahola" }
arr = "coffee_script"
item.type = switch arr
when arr.match /script/
arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
Run Code Online (Sandbox Code Playgroud)
最后发现这也行不通
item = { name: "ahola" }
arr = "coffee_script"
item.type = switch arr
when true
arr
alert item.name + " : " + item.type
# alerts "ahola : undefined"
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
switchCoffeeScript有两种形式:
switch expr
when expr1
result1
...
else
default_result
Run Code Online (Sandbox Code Playgroud)
和
switch
when expr1
result1
...
else
default_result
Run Code Online (Sandbox Code Playgroud)
当然,这两种形式都是表达式,因此您可以说:
x = switch expr
when val then result
...
Run Code Online (Sandbox Code Playgroud)
和
x = switch
when expr then result
...
Run Code Online (Sandbox Code Playgroud)
这switch expr就像 JavaScript switch:将 的结果expr与每个when表达式进行比较并执行when该==结果expr。这种形式与switch以下相同:
if(expr == expr1)
result1
else if(expr == expr2)
result2
...
else
default_result
Run Code Online (Sandbox Code Playgroud)
该switch ... when表单执行第一个为 true 的when expr地方expr,因此这是一种奇特的表达方式:
if(expr1)
result1
else if(expr2)
result2
...
else
default_result
Run Code Online (Sandbox Code Playgroud)
您的所有尝试似乎都试图混合这两种形式switch,并随之而来的混乱。
我想你正在寻找这样的东西:
arr = "coffee_script"
switch arr
when 'coffee_script'
item.type = arr
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
437 次 |
| 最近记录: |