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