【问题标题】:FSharpList assertions with NFluent?FSharpList 断言与 N Fluent?
【发布时间】:2020-06-13 20:20:05
【问题描述】:

我在nfluent documentation 上看到您可以这样断言列表:

var inteers = new int[] { 1, 2, 3, 4, 5, 666 };
Check.That(integers).Contains(3, 5, 666);

但是当我在 F# 中尝试这个时,我似乎无法让它工作:

let myList : int list = [1;2;3]
Check.That(events).Contains(1, 2, 3)

此处显示错误消息:

如何让列表断言在 F# 中起作用?

更新

在我的实际代码中,F# 函数返回一个 FSharpList,我不想更改它,所以我不能简单地将类型更改为例如seq

【问题讨论】:

    标签: f# xunit nfluent


    【解决方案1】:

    F# 不像 C# 那样进行隐式转换。方法签名期望具有 IEnumerable,但您提供了一个列表。这就是错误所说的。 最简单的解决方法是创建一个序列,与 C# 中的 IEnumerable 相同:

    let myList : int list = [1;2;3]
    let mySeq = list |> Seq.ofList
    Check.That(mySeq).Contains(1, 2, 3)
    

    【讨论】:

    • 谢谢,但是在我的实际代码中,F# 函数返回一个 FSharpList,我不想更改它,所以我不能简单地将类型更改为 seq。我已经更新了这个问题。那么将 FSharpList 转换为 seq 的正确方法是什么?
    • 然后使用Seq.ofList进行转换。
    • 或者您可以使用:> 运算符进行显式转换。 let mySeq = list :> int seq
    猜你喜欢
    • 2013-09-12
    • 2022-10-24
    • 2018-02-07
    • 2021-08-27
    • 2018-03-21
    • 2016-04-25
    • 1970-01-01
    • 2018-10-07
    • 2016-06-07
    相关资源
    最近更新 更多