_评论者:gfredericks_
我认为没有干净的方法来解决你提到的问题,这也是我认为这里没有明显解决方案的原因之一。
我在创建{{large-integer}}和{{double}}生成器时遇到了这个问题,我决定创建两个生成器:{{large-integer}}是一个具有默认行为的生成器,而{{large-integer*}}是一个接受选项并返回生成器的函数。
回顾过去,我不知道这是否是最好的选择,因为它很容易混淆。我向大卫·麦克伊弗询问了他在hypothesis(一个类似的Python库)中是如何处理这个问题的,他告诉我他没有任何原始生成器,只有返回生成器的函数(有时没有参数)。我喜欢这种一致性的方法,但显然这将需要对test.check进行重大增加变更(尽管有一些拙劣的技巧可以保留向后兼容性)。
这个问题比这个项目更大。关于你显示的代码,我认为我更喜欢类似于{{gen/set}}的API,使用选项映射而不是位置参数。
现在你让我想到了这个问题,我开始迷上了一个重大变更API的想法,它使用技巧在其他几个版本中保留向后兼容性,这样就可以清理大量的不一致之处。但正如我说的,这比这个项目更大。
如果我们不能提出一个干净的中期方法,我对接受事物的标准在[test.chuck|
https://github.com/gfredericks/test.chuck] ☺要宽松得多。