我需要帮助了解"< |"表现如下代码:
Prop.forAll fiveAndThrees <| fun number ->
let actual = transform number
let expected = "FizzBuzz"
expected = actual
文档说明如下:
将右侧表达式的结果传递给函数 在左侧(后向管道操作员)。
fiveAndThrees不是一个函数,而是一个值,它位于运算符的左侧。
我将上述定义解释为:
输入名为&#34; number&#34;并将其输入&#34;转换&#34;功能。但是,如果我们将右侧表达式的结果传递给左侧的函数,那么输入(即数字)何时以及如何实际初始化?
我只是没有看到它。
完整测试如下:
[<Fact>]
let ``FizzBuzz.transform returns FizzBuzz`` () =
let fiveAndThrees = Arb.generate<int> |> Gen.map ((*) (3 * 5))
|> Arb.fromGen
Prop.forAll fiveAndThrees <| fun number ->
let actual = transform number
let expected = "FizzBuzz"
expected = actual
要测试的功能如下:
let transform number =
match number % 3, number % 5 with
| 0, 0 -> "FizzBuzz"
| _, 0 -> "Buzz"
| 0, _ -> "Fizz"
| _ -> number.ToString()
答案 0 :(得分:4)
<|
是一个比函数应用程序紧密绑定的运算符,所以
Prop.forAll fiveAndThrees <| fun number -> ...
被解析为
(Prop.forAll fiveAndThrees) <| fun number -> ...
Prop.forAll有两个参数,Arbitrary<T>
和函数T -> Testable
,因此Prop.forAll fiveAndThrees
是右侧传递的函数。