我正在尝试创建一个简单的代码段,以允许我创建JS构造函数。到目前为止,我拥有的是
"class constructor": {
"prefix": "class",
"body": [
"class ${1:ClassName} {",
"\t\tconstructor({${2:thisName}: ${2}}) {",
"\t\t\tthis.${2} = ${2}",
"\t}",
"}"
],
"description": "class constructor template"
},
这按预期工作,但是我试图查看是否可以添加多个条目,这也为this
创建了新行,但是在这种情况下,代码段运行的是我填写的课程$2{thisName}
的详细信息。我希望能够添加多个键值对。
因此,它的结尾不是:
class ClassName {
constructor({ thisName: thisName}) {
this. thisName = thisName
} }
我希望能够添加其他项目,使其看起来像;在其中自动创建this.another = another
的新行。
class ClassName {
constructor({ thisName: thisName, another: another}) {
this. thisName = thisName
this.another = another // this is create
} }
${3}..
在这里不起作用,因为可能有n个项目。
答案 0 :(得分:0)
尝试一下:
"class constructor": {
"prefix": "class",
"body": [
"class ${1:ClassName} {",
"\t\tconstructor({${2/([^,]+)([,\\s]*|)/$1: $1${2:+, }/g}}) {",
"${2/([^,]+)([,\\s]*|)/\t\t\tthis.$1 = $1${2:+\n}/g}",
"\t}",
"}"
],
"description": "class constructor template"
},
有关更多说明,请参见我在Make a vscode snippet that can use a variable number of arguments上的回答。
只要在同一正则表达式捕获组中捕获它们,就可以在代码段中使用任意数量的参数-这里的每个arg都在捕获组$ 1中。
然后每个被替换!根据您的情况,第二次\t\t\tthis.$1 = $1${2:+\n
。在选项卡之后,捕获组用于this.$1 = $1
然后检查捕获组2 ${2:+, }
。它要么带有,
,要么没有。如果有内容,请添加\n
,否则将不添加任何内容。
要使此正则表达式正常工作,您应将args输入为
arg1, arg2, arg3, arg4
-带逗号分隔符(逗号后面有空格)。在您的最后一个参数之后,按下tab
以触发摘要转换。