gpt4 book ai didi

sweet.js:转换重复标记的出现

转载 作者:行者123 更新时间:2023-12-01 02:02:19 27 4
gpt4 key购买 nike

我想定义一个可转换的甜蜜宏

{ a, b } # o

进入
{ o.a, o.b }

我目前的尝试是
macro (#) {  
case infix { { $prop:ident (,) ... } | _ $o } => {
return #{ { $prop: $o.$prop (,) ... } }
}
}

然而,这给了我
SyntaxError: [patterns] Ellipses level does not match in the template

我怀疑我真的不明白 ...工作,并且可能需要以某种方式循环遍历 $prop 的值并为每个对象构建语法对象并以某种方式将它们连接起来,但我不知道如何做到这一点。

最佳答案

问题是语法扩展器认为您正在尝试扩展 $o.$prop而不是 $prop: $o.$prop .这是解决方案:

macro (#) {  
rule infix { { $prop:ident (,) ... } | $o:ident } => {
{ $($prop: $o.$prop) (,) ... }
}
}

请注意,我将代码单元放在 $() 中。自己的块来消除椭圆扩展的歧义。

示例: var x = { a, b } # o;变成 var x = { a: o.a, b: o.b }; .

关于sweet.js:转换重复标记的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35226109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com