8

我有一个返回函数,[[]]我想将结果作为单元测试进行测试。但我发现表达式[[]] == [[]]return false。这里有一个简单的测试代码:

# [[]] == [[]];;
- : bool = false

有人能解释一下为什么这个表达式被评估为假吗?

谢谢。

4

2 回答 2

13

使用=,因为你有比较两个值的结构相等:

# [[]] = [[]];;
- : bool = true

因为==引用相等,所以只有在引用相同的内存位置时才返回 true:

let a = [[]]
let b = a

# b == a;;
- : bool = true
于 2012-04-04T11:26:59.717 回答
9

==OCaml 中的运算符表示“物理平等”。但是,您有两个(物理上)不同的列表。可能,您想要“结构平等”,它由=.

于 2012-04-04T10:57:33.360 回答