gpt4 book ai didi

scala - '结果的长度应为 3' : How does the ScalaTest DSL work?

转载 作者:行者123 更新时间:2023-12-04 16:47:35 24 4
gpt4 key购买 nike

ScalaTest 允许您编写如下代码:

result should have length 3

进行此解析的幕后情况是什么?它只是使用中缀表示法吗,即是吗

result.should(have).length(3)

通过一些涉及隐式的魔法?还是发生了更复杂的事情?

最佳答案

你完全正确:隐式 + 中缀语法很神奇。

让我们拆开你的例子。在

result should have length 3

表达式 result(通常)没有方法 should。但是,如果你混合 Matchers ,然后你得到隐式转换 convertToAnyShouldWrapper,它返回一个 AnyShouldWrapper .这个 AnyShouldWrapper 现在有一个重载方法 should

should 的其中一个版本采用 HaveWord作为参数,并返回一个奇怪的东西,叫做 ResultOfHaveWordForExtent . ResultOfHaveWordForExtent 现在有一个length 方法,它接受一个Long,最后返回一个Assertion。 .

因此,您的声明被脱糖为:

convertToAnyShouldMatcher(result).should(have).length(3)

请注意,方法调用和参数在此链中交替出现。因此,如果您不确定它是 should be 还是 shouldBe 之类的东西,只需计算表达式,然后查看您要提供的下一个参数是奇数还是奇数一个均匀的位置。

关于scala - '结果的长度应为 3' : How does the ScalaTest DSL work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com