你将如何创建一个从参数到 sweet.js 宏的字符串?例如:
let foo = macro {
rule {
$name
} => {
console.log('$name', $name);
}
}
var x = 42;
foo x
将输出:
console.log(x, x);
当我希望它输出时:
console.log('x', x);
所以第一个参数有引号。
你将如何创建一个从参数到 sweet.js 宏的字符串?例如:
let foo = macro {
rule {
$name
} => {
console.log('$name', $name);
}
}
var x = 42;
foo x
将输出:
console.log(x, x);
当我希望它输出时:
console.log('x', x);
所以第一个参数有引号。
您可以使用 case 宏:
let foo = macro {
case {_
$name
} => {
letstx $name_str = [makeValue(unwrapSyntax(#{$name}), #{here})];
return #{
console.log($name_str, $name);
}
}
}
var x = 42;
foo x
基本思想是你makeValue
使用标识符的字符串值创建一个新的字符串标记(通过)$name
(unwrapSyntax
给我们给定语法对象的值,在标识符的情况下,它是标识符字符串)。然后letstx
允许我们绑定新创建的语法对象以在#{}
模板中使用。