私は[[]]
を返す関数を持っています。その結果をユニットテストとしてテストしたいと思います。 しかし、式[[]] == [[]]
が返されるのは、false
です。 は、ここで簡単なテストコード:この式がfalseと評価される理由OCamlブール式[]] == [[]]
# [[]] == [[]];;
- : bool = false
誰かが私に説明できますか?
ありがとうございました。
私は[[]]
を返す関数を持っています。その結果をユニットテストとしてテストしたいと思います。 しかし、式[[]] == [[]]
が返されるのは、false
です。 は、ここで簡単なテストコード:この式がfalseと評価される理由OCamlブール式[]] == [[]]
# [[]] == [[]];;
- : bool = false
誰かが私に説明できますか?
ありがとうございました。
使用=
あなたは2つの値を比較するための構造的平等を持っているので:
# [[]] = [[]];;
- : bool = true
==
が参照の等価ですので、あなたが同じメモリ位置を参照する場合、それだけでtrueを返す:
let a = [[]]
let b = a
# b == a;;
- : bool = true
OCamlの==
オペレータは、「物理的平等」を意味します。しかし、あなたは2つの(物理的に)異なるリストを持っています。おそらく、あなたは "構造的平等"を望んでおり、それは=
によってテストされています。
構造的および物理的な平等に関する詳細は、別の質問にあります。http://stackoverflow.com/questions/1412668/does-have-meaning-in-oca ml/ – nlucaroni