8

を返す関数があり[[]]、その結果を単体テストとしてテストしたいと考えています。[[]] == [[]]しかし、式が returnであることがわかりましたfalse。ここに簡単なテストコードがあります:

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

この式が false と評価される理由を誰か説明してもらえますか?

ありがとう。

4

2 に答える 2

13

2 つの値を比較するための構造上の同等性があるため、使用=します。

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

==is reference equalityであるため、同じメモリ位置を参照する場合にのみ true を返します。

let a = [[]]
let b = a

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

OCamlの==演算子は「物理的平等」を意味します。ただし、2つの(物理的に)異なるリストがあります。おそらく、によってテストされる「構造的平等」が必要です=

于 2012-04-04T10:57:33.360 に答える