Json 我可以在VS代码段中包含条件逻辑吗?

Json 我可以在VS代码段中包含条件逻辑吗?,json,vscode-settings,code-snippets,vscode-snippets,Json,Vscode Settings,Code Snippets,Vscode Snippets,我想在VS代码中编写一个代码片段,用Javascript编写一个“switch”表达式,但我可以在其中定义案例数 目前,有一个代码段可以生成一个大小写为1的开关表达式的大纲,并允许您在条件、大小写名称和其中包含的代码之间进行制表 我想能够键入“switch5”(“5”是任意数字)和一个带有5个要创建的案例的开关,我可以在其中通过相关代码进行制表 我知道代码片段是写在JSON文件中的,我可以在其中包含这样的条件逻辑吗,还是不可能 谢谢 简单的回答是,您不能在标准vscode片段中执行这种操作,因为

我想在VS代码中编写一个代码片段,用Javascript编写一个“switch”表达式,但我可以在其中定义案例数

目前,有一个代码段可以生成一个大小写为1的开关表达式的大纲,并允许您在条件、大小写名称和其中包含的代码之间进行制表

我想能够键入“switch5”(“5”是任意数字)和一个带有5个要创建的案例的开关,我可以在其中通过相关代码进行制表

我知道代码片段是写在JSON文件中的,我可以在其中包含这样的条件逻辑吗,还是不可能


谢谢

简单的回答是,您不能在标准vscode片段中执行这种操作,因为它无法使用一些有限的变通方法动态地计算指定变量之外的任何输入,我将在下面提到

你可以-我和其他人已经写了关于他的答案-首先键入各种
大小写
值,然后触发一个代码片段,然后将它们转换成
开关
语句。这有点像是在背单词,但这可能是可能的

但是,有些扩展确实允许您在代码段或设置中正确计算javascript并输出结果。就是这样一种延伸。我将展示另一个更简单的扩展,它可以实现您想要的功能:

javascript.hsnips
中:

snippet `switch(\d)` "add number of cases to a switch statement" A
``
let numCases = Number(m[1])     // 'm' is an array of regex capture groups
let caseString = ''

if (numCases) {       // if not 'switch0'
    let tabStopNum = 1
    caseString = `switch (\${${tabStopNum++}:key}) {\n`

    for (let index = 0; index < m[1]; index++) {
        caseString += `\tcase \${${tabStopNum++}:value}:\n\t\t\$${tabStopNum++}\n`
        caseString += '\t\tbreak;\n\n'
    }

    caseString += '\tdefault:\n'
    caseString += '\t\tbreak;\n}\n'
}
rv = `${caseString}`       // return value
``
endsnippet
它将解析为
${n:defaultValue}
,其中
n
在每次插入tabstop时都会递增。而
:defaultValue
是该选项卡的可选默认值。如果不需要默认值,只需在那里使用
\$${tabStopNum++}


有关如何设置HyperNIPS的更多信息,请参阅。

我忘了注意,它目前适用于0-9个案例,而不是超过0-9个案例。如有必要,可在正则表达式前缀
开关(\d)
中修复。
\${${tabStopNum++}:key}