3
これはQMLの関数です。比較結果が異なる理由は明確ではありませんか?なぜ比較結果が同じではないのですか?
...
function someFunction() {
var id1 = AAAAA.objectId // it is QByteArray property of C++ object
var id2 = BBBBB.objectId // it is QByteArray property of C++ object
var isEqual = id1 === id2
var isEqualToString = id1.toString() === id2.toString()
console.log("=============================")
console.log("id1: ", id1)
console.log("id2: ", id2)
console.log("isEqual: ", isEqual)
console.log("id1.toString(): ", id1.toString())
console.log("id2.toString(): ", id2.toString())
console.log("isEqualToString: ", isEqualToString)
}
...
コンソール結果:
id1: 2607d35d-d9d0-49af-b944-3fc60993890a
id2: 2607d35d-d9d0-49af-b944-3fc60993890a
isEqual: false
id1.toString(): 2607d35d-d9d0-49af-b944-3fc60993890a
id2.toString(): 2607d35d-d9d0-49af-b944-3fc60993890a
isEqualToString: true
:?私たちはあなたのコードをもう一度見てとることができ、これを知っ
QByteArrayは自動的にJSタイプにマッピングされないことに注意してください([here](https://doc.qt.io/qt-5/qtqml-cppintegration-data.html)参照)。無関係のオブジェクト間で最初の比較が行われるため、失敗する可能性があります。 – peppe
私が知っているように、 'QByteArray'からいくつかのQML/Js型への変換はありません。だから2 QObjectとの比較であり、この場合AAAAAとBBBBBは本当に異なるオブジェクトです。つまり、メモリには2つの異なるオブジェクトがあります。 – folibis