Gil*_*ett 42 hashmap literals coffeescript
例如:

所以:
foo = "asdf"
{foo: "bar"}
eval foo
# how do I get {"asdf": "bar"} ?
# this will throw parse error:
{(eval foo): "bar"}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的语法问题:如何让CoffeeScript动态构造哈希,而不是手工完成?
bch*_*rny 45
对于将来发现此问题的任何人,从CoffeeScript 1.9.1开始,支持内插对象文字键!
语法如下所示:
myObject =
a: 1
"#{ 1 + 2 }": 3
Run Code Online (Sandbox Code Playgroud)
请参阅https://github.com/jashkenas/coffeescript/commit/76c076db555c9ac7c325c3b285cd74644a9bf0d2
mu *_*ort 38
你为什么一直在使用eval?您可以使用与在JavaScript中执行此操作完全相同的方式执行此操作:
foo = 'asdf'
h = { }
h[foo] = 'bar'
Run Code Online (Sandbox Code Playgroud)
这转换为这个JavaScript:
var foo, h;
foo = 'asdf';
h = {};
h[foo] = 'bar';
Run Code Online (Sandbox Code Playgroud)
结果是h看起来像{'asdf': 'bar'}.
小智 11
与JavaScript一样,CoffeeScript不允许您将表达式/变量用作对象文字中的键.这是一个简短的支持,但在0.9.6版本中删除了.您需要在创建对象后设置属性.
foo = 'asdf'
x = {}
x[foo] = 'bar'
alert x.asdf # Displays 'bar'
Run Code Online (Sandbox Code Playgroud)
Lai*_*uan -3
尝试这个:
foo = "asdf"
eval "var x = {#{foo}: 'bar'}"
alert(x.asdf)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30396 次 |
| 最近记录: |