F# 如何验证一组键值对中的值?
如何验证一组键值对中的值F# 如何验证一组键值对中的值?,f#,F#,如何验证一组键值对中的值 [<Test>] let ``player has connected row`` () = let grid = [ for i in 0..8 -> (i, true) ] |> Map.ofSeq let rows = grid |> Seq.chunkBySize 3 |> Seq.toList rows.Head.[0..] ** verify all values from list is true
[<Test>]
let ``player has connected row`` () =
let grid = [ for i in 0..8 -> (i, true) ] |> Map.ofSeq
let rows = grid |> Seq.chunkBySize 3 |> Seq.toList
rows.Head.[0..] ** verify all values from list is true** |> should equal true
[]
让“`player已连接行”`()=
设网格=[对于0..8中的i->(i,true)]|>Map.ofSeq
让rows=grid |>Seq.chunkBySize 3 |>Seq.toList
rows.Head。[0..]**验证列表中的所有值是否为真**|>应等于真
我是F#新手,请原谅我的无知。一个选项是使用
Seq.forall
函数:
rows.Head |> Seq.forall (fun kvp -> kvp.Value) |> should equal true
这里,forall
将返回true
,如果指定的条件适用于序列中的所有输入(在条件中,我们只返回布尔值)。要对所有行执行此操作,可以再次使用Seq.forall
:
rows |> Seq.forall (fun row ->
row |> Seq.forall (fun kvp -> kvp.Value)) |> should equal true
这不再需要将输入转换为列表,因为它只使用Seq
函数
您也可以对循环使用普通的,并分别检查值:
for row in rows do
for kvp in row do
kvp.Value |> should equal true
我想这可能不会让测试纯粹主义者感到高兴,因为我们正在签入F#代码,而不是将其指定为单个声明性断言。虽然我不确定是否有更好的方法,我可能会使用for
循环来编写它。谢谢。关于如何对所有行执行此操作,有什么想法吗?这对我来说真的很陌生。更多的样本刚刚添加:)