我偶然发现了肯定在我看来是错误的解析和parseInput套件的功能。似乎与一些字符串作为参数的组合,拥有一个有效的函数适用于检查的有效性参数,并提供了辩论结局的顺序。这可能是简单的代码复制问题:
tryOne = myParse (“α”,“一个”,“β”,“两个”)
tryTwo = myParse (“β”,“两个”,“α”,“一个”)
addOptional (parseObj“α”,“没有”@ (x) (isstring (x) | | ischar (x)));
addOptional (parseObj“β”,“没有”@ (x) (isstring (x) | | ischar (x)));
注意,第一和第二之间唯一的不同调用“myParse”辩论结局的顺序。这个小测试代码运行在第一种情况下返回错误的结果:
注意“α”设置为字符串“α”而不是被设置为“一”,但“beta”是正确设置。然而,在第二次调用(tryTwo),与参数的顺序颠倒过来,返回正确的结果。
顺便说一句,如果我再次运行第一次尝试,它得到答案又错了,所以它不是一个重要的第一次调用解析返回错误的答案。
我试着上面的各种变体,包括数字参数,包括或不包括“addOptional”验证检查功能,其中一些似乎正常工作和一些不喜欢。但这里的例子似乎说明最简单的问题。
解析/ parseInput套件功能内置模板,所以我不能深入这些函数的代码弄清楚这是怎么回事。