Sur cette page

Chaînage optionnel redondant

Cette catégorie d'avertissement est orthographiée « [redundant-optional-chaining] » par qmllint.

Chaînage optionnel redondant

Que s'est-il passé ?

Certaines recherches utilisent le chaînage optionnel alors que cela n'est pas nécessaire. Cela peut se produire lors de la recherche de valeurs d'énumération ou lors d'une recherche sur une base qui ne peut pas être de type « null » ou « undefined ».

Pourquoi est-ce un problème ?

Une recherche optionnelle nécessite une vérification à l’exécution, ce qui n’est pas le cas d’une recherche classique. Ces instructions supplémentaires ne peuvent pas toujours être identifiées comme redondantes et optimisées par les outils. Elles entraînent donc un surcoût en termes de performances d’exécution et alourdissent inutilement le programme.

De plus, cet avertissement peut indiquer que la recherche facultative a été effectuée sur la mauvaise base de la chaîne. Reportez-vous à la section suivante pour un exemple plus concret.

Exemple

// Main.qml
import QtQml

QtObject {
    // Main will either be resolved and always work, or throw an exception or fail to compile
    enum E { A, B, C }
    property int i: Main?.A

    // A url cannot be null or undefined
    property url u: ""
    property string s: u?.toString()

    // Did you mean to make the second lookup optional?
    property int i: Safe?.Unsafe.i
}

Pour corriger ces avertissements, remplacez les recherches optionnelles redondantes par des recherches obligatoires :

// Main.qml
import QtQml

QtObject {
    enum E { A, B, C }
    property int i: Main.A

    property url u: ""
    property string s: u.toString()

    property int i: Safe.Unsafe?.i
}

© 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.