我正在尝试比较列表和数组,看看它们是否相等。假设我们有一个列表 list = [1;2;3;4]
和一个数组 ar = [|1;2;3;4|]
。如果相等,该函数应返回 true
,如果不相等,则应返回 false
。我是这样做的:
let list = [1;2;3;4]
let ar = [|1;2;3;4|]
let list' = Array.toList ar
(list = list')
所以基本上我所做的就是简单地转换和比较两个列表。我的问题是有没有其他方法可以做到这一点,我的意思是不简单地在列表和数组之间转换并且不完全依赖库函数.
最佳答案
您可以利用列表和数组(以及大多数其他集合)实现 seq<'a>
的事实接口(interface)(.NET 术语中的 IEnumerable<T>
),因此您可以将它们传递给 Seq
中的函数没有任何转换的模块。这只是使用一个接口(interface),所以没有开销。
我能想到的最简单的检查两个序列是否相同的函数是forall2
,它采用两个序列并检查谓词是否对成对的元素成立。在这种情况下,谓词只是相等性测试 (fun a b -> a = b)
你可以缩写为(=)
:
let list = [1;2;3;4]
let ar = [|1;2;3;4|]
Seq.forall2 (=) list ar
关于arrays - 检查列表和数组是否相等 F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65801604/