Если условие не соответствует слишком сложному выражению

У меня есть условное утверждение, в котором утверждается, что выражение было слишком сложным для решения в разумные сроки. Если есть больше, чем около 5, содержит инструкции в моем условном выражении, он не справляется с этой ошибкой. Это не похоже на то, что должно происходить при компиляции, поскольку утверждение не так уж сложно. Это ошибка, с которой столкнулся кто-то еще? Есть ли решение, кроме разделения моих условий?

else if(
                contains(JSONDict.keys.array, "id") &&
                contains(JSONDict.keys.array, "part_number") &&
                contains(JSONDict.keys.array, "sales_part_number") &&
                contains(JSONDict.keys.array, "include_in_search") &&
                contains(JSONDict.keys.array, "description") &&
                contains(JSONDict.keys.array, "brand") &&
                contains(JSONDict.keys.array, "product_group") &&
                contains(JSONDict.keys.array, "product_design") &&
                contains(JSONDict.keys.array, "material") &&
                contains(JSONDict.keys.array, "line") &&
                contains(JSONDict.keys.array, "unit_of_mass") &&
                contains(JSONDict.keys.array, "coating") &&
                contains(JSONDict.keys.array, "pcs_converstion") &&
                contains(JSONDict.keys.array, "appRim") &&
                contains(JSONDict.keys.array, "appSegment") &&
                contains(JSONDict.keys.array, "series") &&
                contains(JSONDict.keys.array, "product_application")
                ){

            }

Ответы

Ответ 1

Да, что известная проблема - см. также этот ответ.

Решение состоит в том, чтобы сохранить логическое выражение в переменной, используя многострочный оператор:

else {
    var logicalExpression = contains(JSONDict.keys.array, "id") &&
            contains(JSONDict.keys.array, "part_number") &&
            contains(JSONDict.keys.array, "sales_part_number") &&
            contains(JSONDict.keys.array, "include_in_search")
    logicalExpression = logicalExpression && contains(JSONDict.keys.array, "description") &&
            contains(JSONDict.keys.array, "brand") &&
            contains(JSONDict.keys.array, "product_group") &&
            contains(JSONDict.keys.array, "product_design")
    // ... etc.
    if logicalExpression {
    }
}

Немного странно для такого мощного языка... но это (надеюсь, временный) компромисс.