1
23
事实证明,这并不像你想象的那么难。语法非常难看,但批处理语法实际上能够实现一些令人惊讶的功能,包括递归、局部变量和一些令人惊讶的复杂字符串解析。别误会,这是一种糟糕的语言,但令我惊讶的是,它并没有完全瘫痪。我想我没有学到任何关于快速排序的知识,但是我学到了很多关于批处理文件的知识! 无论如何,这里是批处理文件中的快速排序-我希望您在阅读时能够像在编写时一样理解奇怪的语法。:-)
代码理解起来有点困难。这基本上是标准的快速排序。关键是我们将数字存储在一个字符串中——可怜的人的数组中。第二个for循环相当模糊,它基本上将数组分为一个head(第一个元素)和一个tail(所有其他元素)。Haskell使用符号x:xs来完成,但批处理文件使用一个名为for循环的/f开关来完成。为什么?为什么不呢? SETLOCAL和ENDLOCAL调用让我们可以执行局部变量——某种程度上。SETLOCAL为我们提供了原始变量的完整副本,但当我们调用ENDLOCAL时,所有更改都被完全删除,这意味着您甚至无法使用全局变量与调用函数通信。这就解释了难看的“ENDLOCAL&set return=%sorted%”语法,不管逻辑指示什么,它实际上都可以工作。当执行该行时,由于该行尚未执行,所以排序后的变量未被擦除-然后,由于该行已执行,所以返回变量未被擦除。必然的
|
2
5
这是我不久前写的一个更清晰的版本:
例子:
|
late1 · 批处理文件未执行命令 2 年前 |
Ali EXE · 如何根据bat中命令的输出设置变量? 2 年前 |
Laureano Oliva · 如何将链接用作参数%1批处理函数? 2 年前 |
F35H · 涉及二次使用cd的错误。。在C代码中 2 年前 |