我正在将一个小脚本从coco迁移到LiveScript:
D = (obj, l = 20) ->
if (l > 0)
new
@[k] = (try D(v, l - 1) catch (e) e) for k, v in obj
else
obj此代码在coco中有效,在LiveScript中不编译:
第4行解析错误:意外的“FOR”
我试图以以下方式修改该代码(对于LiveScript):
D = (obj, l = 20) ->
if (l > 0)
new
for k, v of obj
@[k] = (try D(v, l - 1) catch (e) e)
else
obj但它仍然没有编译:
第5行上的无效赋值
如何将这个coco脚本重写为LiveScript?(不是普通的JavaScript方式-不使用临时变量。)
发布于 2013-06-04 18:38:48
只是,LiveScript有对象理解
D = (obj, l = 20) ->
if l > 0
{[k, try D(v, l - 1) catch => e] for k, v of obj}
else
obj因此,答案是catch (e) e在LS中无效,因为LS允许表达式作为析构(catch {msg})的catchee,这意味着您必须向它传递一个块catch => e ( e是隐式的,但可以使其显式:catch e => e)。
https://stackoverflow.com/questions/16918557
复制相似问题