我有一个返回[[]]
的函数,我想将结果作为单元测试进行测试。
但我发现表达式[[]] == [[]]
返回false
。
这是一个简单的测试代码:
# [[]] == [[]];;
- : bool = false
有人可以解释为什么这个表达式被评估为假?
感谢。
答案 0 :(得分:13)
使用=
,因为您有结构相等来比较两个值:
# [[]] = [[]];;
- : bool = true
因为==
是引用相等,所以如果引用相同的内存位置,它只会返回true:
let a = [[]]
let b = a
# b == a;;
- : bool = true
答案 1 :(得分:9)
OCaml中的==
运算符意味着“物理平等”。但是,您有两个(物理上)不同的列表。也许,你想要“结构平等”,它由=
测试。