首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coco到LiveScript迁移

Coco到LiveScript迁移
EN

Stack Overflow用户
提问于 2013-06-04 13:00:37
回答 1查看 220关注 0票数 1

我正在将一个小脚本从coco迁移到LiveScript:

代码语言:javascript
复制
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):

代码语言:javascript
复制
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方式-不使用临时变量。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 18:38:48

只是,LiveScript有对象理解

代码语言:javascript
复制
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)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16918557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档