Auf dieser Seite

Lose Gleichheitsvergleiche vom Typ Zwang

Diese Warnkategorie wird von qmllint mit [equality-type-coercion] angegeben.

Lose Gleichheit Vergleich Typ Zwang

Was ist passiert?

Zwei Werte wurden unter Verwendung der losen Vergleichsoperatoren auf Gleichheit verglichen.

Warum ist das schlecht?

Die losen Vergleichsoperatoren können Werte auf einen anderen Typ zwingen, bevor sie auf Gleichheit geprüft werden. Dies kann zu unerwarteten Ergebnissen führen.

Beispiel

Hier ist ein Beispiel mit einer Liste von Rechtecken und einer TextInput. Wenn der Benutzer eine Zahl eingibt, wird das Rechteck mit diesem Index hervorgehoben. Der Code hat eine Schwachstelle. Wenn die Eingabe leer ist, wird das erste Rechteck rot hervorgehoben, weil "" == 0 ist.

import QtQuick

Item {
    TextInput {
        id: input
    }
    Repeater {
        model: 3
        Rectangle {
            // first rectangle is red on empty input
            color: input.text == index ? "red" : "blue"
        }
    }
}

Verwenden Sie im Allgemeinen die strengen Vergleichsoperatoren === und !==. Selbst wenn Sie sich der Zwangsläufigkeit bewusst sind, wird empfohlen, stattdessen explizite Casts und strenge Vergleiche zu verwenden.

import QtQuick

Item {
    TextInput {
        id: input
    }
    Repeater {
        model: 3
        Rectangle {
            // check inputs, use explicit casts, and strict equality operators
            color: input.text.length !== 0
                   && Number(input.text) === index ? "red" : "blue"
        }
    }
}

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.