coffeescript - 将 CoffeeScript 代码转换为 LiveScript?

标签 coffeescript livescript

我有这个有效的 CoffeeScript,并希望将其转换为 LiveScript。有人可以解释为什么它无法转换吗?还给一个转换后的吗?

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push
      text: scope.todoText
      done: false
    scope.todoText = ''

您可以使用它来编译 CoffeeScript。

http://coffeescript.org/

您可以使用它来编译 LiveScript。

http://gkz.github.com/LiveScript/

最佳答案

您正在针对以隐式对象开头的隐式 block 调用函数scope.todos.push。您必须在 LiveScript 中使用 do,因为它不会执行这种特殊情况(只需将 do 视为 block 周围的括号)。请参阅https://github.com/gkz/LiveScript/issues/50由于原因。

您想要的代码:

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push do
      text: scope.todoText
      done: false
    scope.todoText = ''

这相当于(即do只是括号)

TodoCtrl = (scope) ->
  scope.addTodo = ->
    scope.todos.push(
      text: scope.todoText
      done: false
    )
    scope.todoText = ''

很高兴看到您使用 LiveScript!

关于coffeescript - 将 CoffeeScript 代码转换为 LiveScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597271/

相关文章:

sections - 绑定(bind)访问运算符的一部分的语法是什么?

jquery - BackboneJS 单页站点 : Attaching and Cleaning Up Views

javascript - 为什么 CoffeeScript 默认打印到控制台,以及如何禁用它?

node.js - NodeJS 和 CoffeeScript(咖啡可执行文件)表现不一样?

node.js - 在 NodeJS 中使用 Zlib 压缩文件

livescript - Jasmine 在 Livescript 中测试 : "it" keyword conflict

django - 使用 Django 和 NPM 在 Heroku 上创建应用程序

javascript - for循环每次在Livescript中分配相同的功能

javascript - 如何在没有抗锯齿的情况下调整 Canvas 大小?