是否可以在Coffeescript中进行代码生成?

siv*_*udh 0 metaprogramming coffeescript

说我有一些CoffeeScript中(与Underscore.js混合)是这样的:

someData =
  hello: 'haha'
_(3).times (index) ->
  someData["key-#{index}"] = index
Run Code Online (Sandbox Code Playgroud)

someData那么价值将是:

hello: 'haha'
key-0: 0
key-1: 1
key-2: 2
Run Code Online (Sandbox Code Playgroud)

如果Coffeescript有一些语法糖允许我写这样的东西会很好:

    someData =
      hello: 'haha'
<%
    _(3).times (index) ->
%>
      key-#{index}: index
Run Code Online (Sandbox Code Playgroud)

这将产生someData其价值与原始价值相同的价值.

Coffeescript有这样的设施吗?

Tre*_*ham 5

简答:不.

更长的答案:这种语法将超越CoffeeScript的意图,即使用JavaScript作为一个简单的语言,约为1:1.但是,您可以在CoffeeScript之上使用另一种模板语言.事实上,使用Rails 3.1,拥有.coffee.erb文件非常简单,其中Ruby代码可用于生成CoffeeScript代码,就像您的假设示例一样.